Cita:
Empezado por lmpadron
El primer edit recibe el número y en su evento KeyPress hago lo siguiente
Código:
void __fastcall TForm6::DBEdit9KeyPress(TObject *Sender, char &Key)
{
if(Key == '.')
{
Key = ',';
}
}
|
Jamás deberías hacer una cosa así. Jamás. Tu código debe respetar las preferencias regionales del usuario, en este caso, el separador que usen para los decimales, coma o punto. No deberías tener que preocuparte por cuál caracter introduce el usuario. La función
StrToFloat se encarga de eso y para ello utiliza el valor de la variable global DecimalSeparator. Dicho valor se establece en la inicialización de la unidad SysUtils haciendo una consulta a la configuración regional establecida en el sistema. Tú no deberías alterar el valor de dicha variable y, ni siquiera debería preocuparte saber su valor.
Si el usuario tiene configurado el sistema para usar una coma como separador decimal y oprime un punto, es problema del usuario, tú no debes tratar de adivinar lo que él quería hacer, simplemente dejas que el sistema le marque el error:
Cita:
|
'4.83' is not a valid floating point value.
|
A lo sumo, interceptas la excepción para dar un mensaje en español o más amigable:
Código Delphi
[-]
var
a: Double;
begin
try
a := StrToFloat(Edit1.Text);
except
on EConvertError do
raise Exception.CreateFmt('%s no es un número flotante válido', [Edit1.Text]);
end;
end;
En resumen, tu pregunta en este hilo ni siquiera debería darse. No lo digo por molestar, sino para enfatizar el hecho de que tu código no debería preocuparse por esto.
// Saludos