Delphi - 10.10 no es un valor Real????

 
Vista:

10.10 no es un valor Real????

Publicado por Juan (17 intervenciones) el 10/02/2003 22:24:59
.....alguin porque cuando en una caja de texto pongo un valor (524.56) y hago esto....

x:=StrToFloat(Edit1.Text); x es un variable real

me marca error de invalido valor flotante......alguien sabe porque????
....gracias por la ayuda....

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:10.10 no es un valor Real????

Publicado por mamcx (533 intervenciones) el 10/02/2003 22:52:08
Posiblemente porque tu sistema esta configurado para que el ',' sea el separador y no '.'

x:=StrToFloat(524,56)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:10.10 no es un valor Real????

Publicado por juan (17 intervenciones) el 10/02/2003 22:59:40
.....ahaaa y donde puedo cambiar eso?????
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:10.10 no es un valor Real????

Publicado por Ernesto D'Spirito (706 intervenciones) el 11/02/2003 00:24:30
La función StrToFloat espera que la cadena que se pasa como parámetro contenga un número que use como separador decimal el indicado en la configuración regional del sistema, que dicho sea de paso se carga automáticamente al iniciar la aplicación en la variable predefinida DecimalSeparator (unidad Sysutils).

Normalmente, el separador decimal es la coma (','), por lo que si ingresas un número con un punto, la función StrToFloat fallará.

Una solución posible sería que validaras la entrada de datos en el cuadro de texto, convirtiendo los puntos y comas por el separador del sistema según corresponda. Ejemplo

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key in [',', '.']) then Key := DecimalSeparator;
end;

Otra solución posible sería reemplazar al momento de hacer la conversión:

function AjustarSeparadorDecimal(const s: string): string;
begin
if DecimalSeparator = '.' then
Result := StringReplace(s, ',', DecimalSeparator,
[rfReplaceAll, rfIgnoreCase])
else
Result := StringReplace(s, '.', DecimalSeparator,
[rfReplaceAll, rfIgnoreCase])
end;

x := StrToFloat(AjustarSeparadorDecimal(Edit1.Text));

Espero que te sirva.

Ernesto D'Spirito
http://www.latiumsoftware.com/es/index.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar