Home » Tutorials » Object Pascal/RTL » Exceptions

Exceptions

Eingabeüberprüfung

Wir beginnen mit einem häufig auftretenden Fall: Ein Programm besitzt in der Regel Eingabefelder, um Daten vom Benutzer entgegenzunehmen. Die Eingaben befinden sich nun in der Eigenschaft Text einer Edit-Komponente. Text ist vom Typ String, d. h. alle Eingaben werden zunächst als String gespeichert – auch wenn wir in dem Feld nur Zahlen oder Datumswerte haben wollen. Es gibt auf den einschlägigen Internetseiten natürlich einige Komponenten, die spezielle „DateEdit“- oder „CurrencyEdit“-Komponenten darstellen. Wir wollen es aber mit den Delphi-Bordmitteln versuchen.
Die Überprüfung sollte sinnvollerweise im OnExit-Ereignis des Edit-Feldes stattfinden. Nun gibt es aber mehrere Möglichkeiten zu prüfen, ob eine Eingabe eine Zahl ist. Der String könnte Zeichen für Zeichen durchgegangen werden. Jedes Zeichen sollte eine Ziffer sein. Oder vielleicht auch ein Komma oder ein Minus. Etwas umständlich.
Besonders bei der Eingabe eines Datums genügt es nicht, jedes einzelne Zeichen für sich zu prüfen, denn 32.13.2000 besteht auch nur aus Zahlen und Punkten, ist aber dennoch kein gültiges Datum.
Doch wozu bietet Delphi Funktionen, mit denen Strings in beinahe alle anderen Typen umgewandelt werden können. Diese wollen wir verwenden.
Für Datumswerte wäre das z.B.:

var datum: TDate;
...
datum := StrToDate(Edit1.Text);

Das funktioniert jedoch nur, wenn Edit1.Text tatsächlich ein gültiges Datum enthält. Ansonsten – so ist der Delphi-Hilfe zu entnehmen – wird eine „EConvertError-Exception“ ausgelöst.
Solche Exceptions können abgefangen und ausgewertet werden. Dazu mehr im nächsten Abschnitt.