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 22: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 22: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 22: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 22: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 22: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 22: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 22: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 22: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 25-03-2009 23: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 25-03-2009 23: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 25-03-2009 23: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 25-03-2009 23: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 20:29:57

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

rgstuamigo 26-03-2009 20: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 26-03-2009 23: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 06:44:09.

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