![]() |
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.:( |
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:
Espero haberme explicado bien. Saludos |
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. |
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 |
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. |
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:
Espero que así ya te sirva. Saludos |
Muchisimas gracias ya me funciona. Repito Muchas Gracias.
|
La franja horaria es GMT +2. Ahora son las 17:48:24. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi