Hola Oscar.
Al igual que
Cañones, no entiendo el resultado que esperas. Pero si en algún momento deseas almacenar como número real la cadena '1.540,65', al momento de la conversión, va a tener que tener el formato '1540.65' sí o sí. Ya que ese es el formato de representación interna que admite Delphi (y los lenguajes que conozco).
Como lo muestres es otro cantar... En el foro C++ Builder se trato un tema similar:
Error de conversion.
Probá de este modo:
Código Delphi
[-]
function CadenaAFlotante(Cad: string): Double;
var
Sep: Char;
begin
Sep:= DecimalSeparator;
Delete(Cad, Pos('.', Cad), 1);
Cad:= AnsiReplaceStr(Cad, ',', '.');
DecimalSeparator:= '.';
Result:= StrToFloat(Cad);
DecimalSeparator:= Sep;
end;
Ejemplo de llamada:
Código Delphi
[-]
...
var
Valor: Double;
begin
Valor:= CadenaAFlotante(Edit1.Text);
ShowMessage(FloatToStr(Valor));
end;
Pero como te dije arriba no alcanzo a entender lo que buscas...
Saludos.