ich muss Zahlen aus einer Datei einlesen, die entweder mit deutschem (1,234) oder amerikanischem Decimalsparator (1.234) erstellt wurden.
Die Anwendung soll auf Windows Systemen mit Sprache Deutsch oder Englisch dann laufen und die eingelesenen Strings immer richtig interpretieren
Gibt es hier eine bessere Lösung als meine ?
Delphi-Quellcode:
function ChangeLocalFloatStr (FloatStr : String ) : String;
var usedDecimalSeparator : Char ;
NOTusedDecimalSeparator : Char ;
begin
// egal was der user eingestellt hat ......
usedDecimalSeparator := TFormatsettings.Invariant.DecimalSeparator;
if usedDecimalSeparator=',' then NOTusedDecimalSeparator:='.'
else NOTusedDecimalSeparator :=',';
if pos (usedDecimalSeparator , FloatStr) > 0 then
begin
result := FloatStr;
end
else
begin
result := stringreplace(FloatStr, NOTusedDecimalSeparator , usedDecimalSeparator,
[rfReplaceAll, rfIgnoreCase]);
end;
end;
Aufruf :
Delphi-Quellcode:
a : real;
astr : String ;
a := FloatToStr( ChangeLocalFloatStr (astr)) ;