Delphi-Quellcode:
function TForm1.IsValidFloat(AValue1: String): Boolean;
var
i: Integer;
begin
Result := true;
{
Gegeben: String, Gesucht: Boolean}
if AValue1 <> '' then
begin
for i := 1 to Length(AValue1) do // Strings beginnen bei 1 !!!
begin
if not (AValue1[i] in ['0'..'9', ',']) then
begin
Result := false;
Exit; // das Ergebnis steht fest, also kann man mit Exit oder Break die Bearbeitung auch abbrechen
end;
end;
end else
begin
ShowMessage('String ist leer.');
Result := false;
end;
end;
Aber wozu der Aufwand?
Es gibt fertige Funktionen, um sowas zu prüfen.
TryStrToFloat
StrToFloatDef
Val (das sagt einem sogar wo der Fehler steckt)
PS: Das Komma ist nicht immer das Dezimaltrennzeichen. (die Amis nutzen z.B. den Punkt dafür)
DecimalSeparator
Deine Funktion erlaubt auch noch mehrere Kommas oder das Weglassen des Vorkomma- und/oder Nachkommaanteils.
Wenn man schon eine manuelle Syntakprüfung machen möchte, dann doch besser richtig prüfen, denn sonst bringt das Ganze ja nichts, da es später dennoch knallen kann.
Zitat:
Strings beginnen bei 1
Ich rate dir dringend mal, in den Projektoptionen, die Indexprüfung zu aktivieren. (eventuell auch mal probehalber die Überlaufprüfung)