PDA

Ver la Versión Completa : String to Float


juggern
28-12-2020, 11:11:12
Buenos días chicos,

Felices fiestas a todos!

Veréis, tengo un problema que no consigo ver y seguro que es una chorrada.

Estoy ahora mismo trabajando con Delphi 2010.
Tengo una variable string que es por ejemplo 6,99, yo esta variable la quiero guardar en otra variable double, pero me guarda siempre un 0

var
texto : string;
cantidad: double;

begin
texto:= '6,99';
cantidad:= StrToFloat(texto);
end.

Es un trozo muy simple, pero si voy haciendo el seguimiento y texto lleva bien 6,99 pero la variable cantidad, siempre me guarda un 0.

He probado a insertar directamente el 6,99 en cantidad, pero entonces la depuración se salta esa línea, como si no fuera válida.

var
texto : string;
cantidad: double;

begin
texto:= '6,99';
cantidad:= 6,99;
cantidad:= StrToFloat(texto);
end.

He comprobado y el signo decimal es correcto, es la coma.

No se que se me está pasando, será que llevo mucho seguido mirando código, no se.

Cualquier ayuda os estaría muy agradecido.

Un saludo

Casimiro Notevi
28-12-2020, 11:21:53
¿Y no muestra ningún error?


https://i.imgur.com/VAacqZy.png

juggern
28-12-2020, 11:33:34
No, ninguno, simplemente hago un seguimiento de la variable y se queda con valor 0.

Y en el segundo caso, cuando intento directamente asignar el 6,99 a la variable, en modo depuración paso a paso, se salta esa línea.

Casimiro Notevi
28-12-2020, 11:42:20
Es que lo que cuentas no puede ser.

Crea un proyecto nuevo, limpio y prueba.
Antes reinicia el ordenador :D

juggern
28-12-2020, 11:54:35
Ok, seguiré avanzando el proyecto y cuando reinicie probaré otra vez a ver, porque no lo entiendo, tengo otra parte del proyecto donde estoy recuperando del ini un valor y lo guardo en una variable double usando strtofloat y ahí me lo está guardando bien.

Seguramente sea como dices y algo haya quedado mal.

En cuanto reinicie y pruebe otra vez os comento que tal.

Gracias!

lucho6007
28-12-2020, 16:25:14
Asegurate de probar con la variable seteándola como '6,99' y como '6.99'. StrToFloat toma la configuración de Windows, por lo tanto, si tenés configurado el separador de decimales como '.', entonces '6,99' devolverá un error. Habitualmente se configura la coma ',' como separador de decimales y el punto '.' como separador de miles. Al menos en Argentina (país donde resido) es así.


Saludos

juggern
30-12-2020, 09:12:32
Si si, eso ya lo había probado, con la coma me da error, lo normal.

He probado en un proyecto limpio y funciona perfectamente, no lo entiendo, dentro del proyecto que estoy modificando no funciona pero fuera si.

newtron
30-12-2020, 09:42:42
¿No sería que si no usas la variable posteriormente no se ve bien el valor en el depurador? Esas cosas pasan.


Saludos

juggern
30-12-2020, 10:17:31
No porque si que la uso posteriormente para cálculos, pero claro, como coge 0, no me vale.

Voy a tratar de pasarlo todo a un proyecto nuevo a ver.