![]() |
Frage zu Try Except
Hallo und frohe Pfingsten!
Ich hab hier mal folgenden noch fehlerhaften Code:
Delphi-Quellcode:
Es soll so sein, dass SetButtons(1) und activatePostEdit erst ausgeführt werden, wenn man in das Feld 'Genre' auch wirklich etwas eingegeben hat(und damit die Exception nicht mehr ausgelöst wird).
procedure TForm1.BtnStoreClick(Sender: TObject);
var JobDone: Boolean; begin JobDone:= false; Try Query1.Post ; except on EDatabaseError do Messagebox(0, 'Feld Genre darf nicht leer sein!', 'Warnung',16); End; SetButtons(1); activatePostEdit; end; Wie könnte ich das am besten bewerkstelligen? Gruß Gambit P.S Das Feld Genre ist in der Paradoxtabelle mit 'Eingabe erforderlich' gekennzeichnet |
Re: Frage zu Try Except
Eine Möglichkeit wäre folgende Änderung:
Code:
Abort löst eine "stille" Exception aus, so daß keine weitere Fehlermeldung angezeigt wird, verhält sich ansonsten aber wie eine normale Exception -> Abbruch der Codefolge.
procedure TForm1.BtnStoreClick(Sender: TObject);
var JobDone: Boolean; begin JobDone:= false; Try Query1.Post ; except on EDatabaseError do [color=#f60000]begin[/color] Messagebox(0, 'Feld Genre darf nicht leer sein!', 'Warnung',16); [color=#f60000]Abort; end;[/color] End; SetButtons(1); activatePostEdit; end; ...:cat:... |
Hallo Gambit,
am besten mit einer repeat until Schleife.
Delphi-Quellcode:
Aber Achtung, diese Schleife wird nur durch ein erfolreiches "Post" verlassen. Willst du das wirklich?fertig := false; repeat Try Query1.Post ; fertig := true; except on EDatabaseError do Messagebox(0, 'Feld Genre darf nicht leer sein!', 'Warnung',16); End; until fertig; |
Zitat:
...:cat:... |
Im Prinzip glaub ich schon. ich versteh das doch richtig, dass die Exception eintritt, wenn nicht erfolgreich "gepostet" werden kann. Es muss aber so sein, dass ich noch die Möglichkeit erhalte, etwas fürs Genre einzutragen. Ich probier das jetzt mal aus.
Danke erstmal Gambit |
Ne, so gehts doch nicht. So hab ich praktisch einen Endlos Loop, weil ich nicht die Gelegenheit erhalte, bei Genre etwas einzutragen. Die Exception wird ja ausgelöst, wenn bei Genre nichts eingetragen wird, weils in der Tabelle so markiert ist.
Gruß Gambit Nachtrag: Die Version mit dem Abort scheint gut zu funzen!! |
ich würde halt die beiden aufrufe
SetButtons(1); activatePostEdit; direkt unter das Query.post setzen, also innerhalb von try..except. Wenn das Post fehlschlägt, tritt der except fall ein und es wird nichts mehr versucht (try). Wenns funktioniert dann werden die beiden methoden halt auch noch ausgeführt. Klar, das geht auch mit dem abort, allerdings finde ich das so schicker.. Gruß Ken |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:24 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 by Thomas Breitkreuz