Hi,
mein Delphi benutzt in Decimalzahlen Komma. Ich habe eine Funktion, in der die Eingaben auf ihrer Gültigkeit überprüft werden, wobei aber auch Punkte in Decimalzahlen zugelassen werden sollen:
Delphi-Quellcode:
function ValidateNumber(s: String): Boolean;
var i: Integer;
t: Real;
begin
Result := True;
for i := 1 to Length(s) do
if s[i] in ['-', '0'..'9', '.', ','] = False then
Result := False;
StringReplace(s, '.', ',', [rfReplaceAll]);
try
t := StrToFloat(s);
except
Result := False;
end;
end;
Wenn aber s z.B. '0.5' ist, dann liefert StrToFloat(s) einen Fehler, obwohl StringReplace eigentlich den Punkt in einen Komma hätte verwandeln sollen.
Mit einem Schritt-für-Schritt durchlauf der Funktion habe ich bemerkt, dass nach StringReplace s immer noch Punkte enthält!
Was ist schief gegangen?