![]() |
Problem bei Fehlerverarbeitung
ich hab ein Editfeld, in das ein integer wert geschrieben werden soll, wird nun z.b. ein string eingegeben wird über showmessage fehlermeldung ausgegeben
Delphi-Quellcode:
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin if key=#13 then begin bevel4.Hide; try aanzahl:=strtoint(edit4.Text) except begin showmessage('Das ist kein gültiger Wert');exit; end; edit4.Hide; radiogroup1.Show; radiogroup1.setfocus; aber wie kann ich, nachdem die message angezeigt wird, wieder an den anfang der prozedur zurückkehren, dass ein neuer wert eingegeben werden kann? |
Re: Problem bei Fehlerverarbeitung
Zitat:
deine Proc. procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char); wird jedesmal beim keypress von neuem aufgerufen. Gruss KH |
Re: Problem bei Fehlerverarbeitung
Hallo...
versuchs mal damit:
Delphi-Quellcode:
- Im Falle eines Fehlers wird AllesOK auf False gesetzt und Edit4 bleibt sichtbar.
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
var AllesOK: Boolean; begin AllesOK:= True; if key=#13 then begin bevel4.Hide; try aanzahl:=strtoint(edit4.Text) except begin showmessage(Edit4.Text + ' ist kein gültiger Wert'); Edit4.Text:= ''; // z.B. Feld löschen, oder du kannst an dieser Stelle alles markieren, wie du willst AllesOK:= False; end; if AllesOK then begin edit4.Hide; radiogroup1.Show; radiogroup1.setfocus; end; end; end; :hi: |
Re: Problem bei Fehlerverarbeitung
Ohne den try-except-Block fände ich es besser. Stattdessen könnte man TryStrToInt oder Val benutzen. Exception-Handling ist ja eher für Fehler gedacht, die unerwartet auftreten können (abgebrochene Netzwerkverbindungen, Hardwarefehler oder sowas).
|
Re: Problem bei Fehlerverarbeitung
...bist aber heute wieder kleinlich... :P
|
Re: Problem bei Fehlerverarbeitung
Ja nun, viele sehen try-except ja als Allheilmittel für alle möglichen Fehler an, das mag ich eben nicht ;)
|
Re: Problem bei Fehlerverarbeitung
...weiß ich doch 8) Ich wollte nur nicht zu viel Durcheinander anrichten...des Verständnisses wegen :P
[edit] ...noch besser wäre es, erst gar keine ungültigen Zeichen zuzulassen. In diesem Falle nur Zahlen zulassen. :thumb: [/edit] |
Re: Problem bei Fehlerverarbeitung
Try...except/finally sollte nur für nicht vorhersehbare Fehler verwendet werden. Meist gibt es Besseres ( z.B. Try<Typ>To<Typ>() oder <Typ>To<Typ>Def() statt <Typ>To<Typ>() )
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz