Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Elegir Posicion de una cadena String y eliminar caracter en una posicion deseada (https://www.clubdelphi.com/foros/showthread.php?t=64303)

BuRtOn 25-03-2009 23:30:04

Elegir Posicion de una cadena String y eliminar caracter en una posicion deseada
 
Saludos amigos, sucede que necesito hacer esto:

Tengo una cadena string que contiene un valor money que se asigno en una tabla , y me arroja el siguiente resultado en un label: $248968 , entonces necesito solo capturar 248968, en pocas palabras me toca eliminar el signo $ , siempre me va a salir ese signo $, asi que tengo un componente que me transforma Números a letras, entonces si ingreso mi cadena string con el signo $, no me va a hacer la conversion.

Bueno amigos agredezco en el alma que me puedan colaborar o me indiquen el camino correcto, antemano gracias por su tiempo prestado

BuRtOn 25-03-2009 23:33:45

Amigos olvidaba algo, el valor que coloque de ejemplo no es fijo, los valores varian de mayor a menor o viceversa, asi que no es algo que siempre tenga una misma longitud de cadena, Gracias.

dec 25-03-2009 23:34:26

Hola,

A bote pronto, usar la función "StringReplace" podría servir. Sería cuestión de reemplazar el caracter "$" por una cadena vacía, lo que equivale a quitarlo del medio:

Código Delphi [-]
s := StringReplace('$248968', '$', '', [rfReplaceAll];

"s" contendrá la cadena "248968".

BuRtOn 25-03-2009 23:38:00

Hu amigos, por cierto el signo $, siempre va a ocupar la primera posicion, despues de el seguiran los números que sean, Gracias.

BuRtOn 25-03-2009 23:43:09

Dec, ese número lo coloque de ejemplo, pero como hago para ubicar una cadena cualquiera ?, osea puede ser $248968 como tambien puede ser $1859638 , si vez esos valores varian, y todo depende del precio del producto, por que es una factura, y esos valore precios estan almacenados en una base de datos, asi que siempre visualizare ese valor en un label.

No se si me equivoque, pero entonces como guardo esa cadena en la variable s ?, seria algo asi s:= edtPrecio.text;

BuRtOn 25-03-2009 23:45:32

o podria quedar algo asi:

s := StringReplace('edtPrecio.Text', '$', '', [rfReplaceAll]); en s, se guardara el valor de la cadena pero sin el signo $.Dec por favor dime si estoy bien, o en donde estoy herrando, gracias por tú tiempo prestado.

BuRtOn 25-03-2009 23:48:37

O podria ser asi:

Código Delphi [-]
s := StringReplace(edtPrecio.Text, '$', '', [rfReplaceAll]);


el edtPrecio.Text va sin ' ' ???, si está bien la sintaxis dec ?, Gracias amigo.

Caro 25-03-2009 23:59:51

Cita:

Empezado por BuRtOn (Mensaje 342724)
s := StringReplace(edtPrecio.Text, '$', '', [rfReplaceAll]);
el edtPrecio.Text va sin ' ' ???, si está bien la sintaxis dec ?, Gracias amigo.

Si esta bien, en el primer parametro debes colocar la cadena en la cual vas a reemplazar. También puedes utilizar Copy quitando el primer caracter.

Saluditos

dec 26-03-2009 00:00:54

Hola,

Puedes quitar el caracter "$" de la cadena que sea, y provenga esta de donde provenga. Seguro que a estas alturas ya has visto cómo, usando la función "StringReplace". Otra cosa que se me ocurre es, si no convendría más guardar "enteros" en lugar de cadenas en la base de datos. Creo que esto podría ser bien por varias razones. En primer lugar, tú jugarías luego con números, y le añadirías o no el caracter que fuera menester, o no se lo añadirías. En segundo lugar, me parece que un "entero" ocupa menos en la base de datos que una "cadena". No sé cómo lo ves. :)

BuRtOn 26-03-2009 00:01:39

Gracias Caro, pero no te entiendo lo del COPY ?????, en que parte va ?, que tengo que suprimir ??, no te entendi, gracias amigo.

BuRtOn 26-03-2009 00:03:19

jejeje, es que en la bd esta almacenado como money $, y lo paso a string, por que simplemente necesito imprimir el valor. jeje, Gracias amigos, como siempre me sacan de apuros.

Caro 26-03-2009 00:07:56

Hola de nuevo, el Copy no va en el StringReplace, tal como lo tienes esta bien.

Así directo si quieres mostrar en un Label:
Código Delphi [-]
 Cadena := Query.FieldByName('CampoPrecio').AsString;
 Label1.Caption := StringReplace(Cadena, '$', '', [rfReplaceAll]);

o si usas Copy:
Código Delphi [-]
 Label1.Caption := Copy(Cadena, 2, Length(Cadena));

rgstuamigo 26-03-2009 21:29:57

Y por que no hacer:
Código Delphi [-]
Cadena[1]:=#32;
Label1.Caption:=TrimLeft(Cadena);
Saludos.....;)

rgstuamigo 26-03-2009 21:34:54

O tambien:
 
Tambien se puede hacer:
Código Delphi [-]
Delete(Cadena,1,1);//elimina el primer caracter ascii de cadena
Label1.Caption:=Cadena;
;)

Al González 27-03-2009 00:59:39

Se me ocurre esta otra:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := PChar (@Edit1.Text [2]);
end;

:)


La franja horaria es GMT +2. Ahora son las 19:41:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi