Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#17

AW: Taschenrechner : ' ' ist kein Gleitkommawert

  Alt 29. Jul 2011, 16:00
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.

Delphi-Referenz durchsuchenTryStrToFloat
Delphi-Referenz durchsuchenStrToFloatDef
Delphi-Referenz durchsuchenVal (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)
Delphi-Referenz durchsuchenDecimalSeparator

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)
$2B or not $2B

Geändert von himitsu (29. Jul 2011 um 16:16 Uhr)
  Mit Zitat antworten Zitat