Gegen die Plausibilitätsabfrage per Try...Except ist an sich Nichts einzuwenden, das es die Lesbarkeit erhöht und nicht unnötig verschachtelte 'If ok then' vermeidet. Der Code, so wie er bei Richtigkeit der Eingabe ausgeführt würde, ist sequentiell dargestellt und die Fehlerbehandlung klar davon getrennt. Speziell bei mehreren Fehlerquellen ist das sehr praktisch.
Bei ein oder zwei Abfragen würde ich aber vielleicht, wie eben schon erwähnt, doch die 'TryStrTo****' Funktionen verwenden. Die hier immer wieder auftretenden Argumente von wesentlich langsamerer Ausführung mit Try...Except sind insofern Blödsinn, als es vollkommen Wurscht ist, ob der Anwender nach 0,15 oder 2,0 ms eine Fehlermeldung vorgesetzt bekommt.
Code mit Try...Except:
Delphi-Quellcode:
Begin
Try
Zahl := StrToInt (Eingabe.Text);
If Zahl < KleinsterWert
Then Raise Exception.Create('
Zahl ist zu klein');
If Zahl > KleinsterWert
Then Raise Exception.Create('
Zahl ist zu gross');
...
// Code, der normalerweise (Eingabe ist OK) ausgeführt wird.
Except
...
// Fehlerbehandlung
End;
End;
Der gleiche Code mit If...Then
Delphi-Quellcode:
Begin
If TryStrToInt (Eingabe.Text, Zahl) Then
If Zahl < KleinsterWert Then
... // Fehlerbehandlung
Else
If Zahl > KleinsterWert Then
... // Fehlerbehandlung
Else Begin
... // Code, der normalerweise (Eingabe ist OK) ausgeführt wird.
End
Else
... // Fehlerbehandlung
End;
Version (1) ist eindeutig die Lesbarere, finde ich jedenfalls.