Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#5

Re: Leeres Feld ohne "ShowMessage...."

  Alt 9. Aug 2006, 12:54
Es handelt sich um ein Grundproblem dieser Delphi-Funktionen: StrToInt, StrToFloat usw. liefern immer einen Fehler (d.h. Exception), wenn der gegebene String dem gewünschten Zahlentyp nicht entspricht.

Deshalb muss man dieses Problem immer abfangen:

1. Variante
Zitat von RavenIV:
entweder prüfst Du ab, ob in Edit1 und Edit2 was eingegeben wurde und ob es sich um eine Zahl handelt
Dabei gibst Du ggf. den gewünschten Ersatzwert an:
Delphi-Quellcode:
if (Edit1.Text <> '') AND (isNumber(Edit1.Text))
then a := StrToFloat(Edit1.Text)
else a := 0;
2. Variante
Zitat von RavenIV:
oder Du machst einen try..except um die Zeilen mit StrToFloat.
Delphi-Quellcode:
try
  a := StrToFloat(Edit1.Text);
except
  a := 0;
end;
3. Variante
Du lässt Dir diese Arbeit von Delphi abnehmen:
Zitat von idontwantaname:
Nimm am besten Delphi-Referenz durchsuchenStrToFloatDef statt Delphi-Referenz durchsuchenStrToFloat
Bei dieser Funktion kannst du als 2. Parameter einen Wert angeben, der zurückgegeben wird, wenn der String kein valides Float ist.

Delphi-Quellcode:
{Einlesen der Variablen}
a := StrToFloatDef(Edit1.Text, 0);
b := StrToFloatDef(Edit2.Text, 0);
Viel Erfolg! Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat