Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Convertir una cadena (https://www.clubdelphi.com/foros/showthread.php?t=28667)

Ganduke 28-12-2005 11:31:29

Convertir una cadena
 
Saludos y haber si alguien puede echarme un cable.
bien explico recogo un dato de un listbox como string con el valor 00000008.30
y me gustaria convertirlo en un numero para realizar operaciones con el pero a la hora de convertirlo me da el error is not a valid integer value, he intentado como real como int64 ..... ya no se como solucionarlo (este valor es un descuento que tengo aplicar a un precio.) por favor me urge. Muchas Gracias.:(

Bicho 28-12-2005 11:50:47

Float
 
Hola Ganduke bienvenido al foro y felices fiestas

En Delphi si quieres usar números con coma flotante, no te sirven el tipo de dato Int, ya que es de tipo entero. Para eso se usa el tipo de dato Float (con longitud de 32 bits) y Double (con longitud de 64 bits).
De éste modo si intentas convertir la cadena string a número conservando la coma deberás hacer lo siguiente:
Código Delphi [-]
StrToFloat('00000008.30')

Espero haberme explicado bien.

Saludos

Ganduke 28-12-2005 12:31:50

Muchas gracias por responder tan rapido pero sigue fallando
pvp2:=StrToFloat(listbox3.Items[n]); // en listbox es de donde cogo el valor pero sigue diciendo lo mismo.

Bicho 28-12-2005 12:46:24

Lo siento, no lo veo.

Puedes poner una parte del código para que podamos esclarecer que está ocurriendo??

Seguro que te aparece el mismo error de "Is not a valid integer value"??

Saludos

Ganduke 28-12-2005 12:57:36

Bueno si me da el error en vez de Int es Float, pero te comento
Lo mismo es que no declaro bien las variables??

Var
linea, opcion:string;
n,z: integer;
pvp2:double;
dto,pvpdto,pvp:real;
Begin
pvp2:=StrToFloat(listbox3.Items[n]);
y aqui es donde da el error.

Tambien te comento que puse directamente pvp2:=StrToFloat('00000008.30')
y me sigue dando el error
EConvertError with message "00000008.30" is not a valid floating point value.
Muchas gracias por ayudarme.

Bicho 28-12-2005 13:10:51

Gracias Ganduke, ahora ya lo veo.

Declarar pvp2 como Double no está mal, pero puedes declararlo simplemente como Float.
El problema te lo está dando ahora porque la cadena contiene un '.' y no puede convertirlo para que sea un número. Es decir necesita que el string no contenga un punto, sino una coma.

Lo que puedes hacer es usar cualquiera de las funciones que tiene Delphi para substituir carácteres en una cadena. Yo a bote pronto he probado la funcion AnsiReplaceStr que está en la unit StrUtils

Y al final tu código quedaria de la siguiente manera:

Código Delphi [-]
  pvp2:=StrToFloat(AnsiReplaceStr(listbox3.Items[n], '.', ','));

Espero que así ya te sirva.

Saludos

Ganduke 28-12-2005 14:03:16

Muchisimas gracias ya me funciona. Repito Muchas Gracias.


La franja horaria es GMT +2. Ahora son las 21:45:54.

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