![]() |
Aufrufende Prozedur verlassen
Hi!
Ich hätte da mal eine Frage (wer hätt's gedacht)... Ich habe mir eine Prozedur "Error" geschrieben:
Delphi-Quellcode:
Die wird immer dann aufgerufen, wenn ein schwerwiegender Fehler aufgetreten ist, sodass die Prozedur verlassen werden soll, in der der Fehler auftrat.
procedure Error(msg: String);
begin MessageDlg(msg,mterror,[mbOk],0); end; Momentan sieht das dann bspw. so aus:
Delphi-Quellcode:
Bedeutend schöner fände ich es jetzt allerdings, wenn die Error-Prozedur auch dieses Exit gleich mit veranlassen könnte. Geht das irgendwie?
if not IsSthSelected(Listbox1) then
begin Error('Sie müssen das Bild mindestens einem Gebäude zuordnen'); exit; end; Ciao Frederic |
Re: Aufrufende Prozedur verlassen
Nun ja.... Nein. Dazu müsste Error() die Stackgröße des Aufrufers kennen, den Stack bis zur Rücksprungadresse abräumen und dann erst zum Ende kommen. Geht bestimmt irgendwie, aber bestimmt nicht einfach^^
|
Re: Aufrufende Prozedur verlassen
Hi!
Hmm, das klingt wie eine "zu-Fuß-Lösung" ;) Wenn es nur eine solche gibt, bleibt es wie es ist. Ich dachte mir schon, dass es da nichts "schönes" gibt, aber ich wollt dann doch mal fragen. Ciao Frederic |
Re: Aufrufende Prozedur verlassen
Sowas erreichst du nur mit Exceptions, wenn du sie zu einem "höheren" Exception-Handler durchschlagen läßt. Ansonsten wüßte ich nicht, wie sich das in Delphi realisieren ...
|
Re: Aufrufende Prozedur verlassen
Wäre IMHO auch nicht sinnvoll, da ja die Ablauflogik/Programmfluß unterbrochen wäre.
|
Re: Aufrufende Prozedur verlassen
Hi!
Gut, dann habt ihr mich überzeugt :wink: Wie gesagt, ich dachte es mir, aber sicher ist sicher... Ciao Frederic |
Re: Aufrufende Prozedur verlassen
Zitat:
|
Re: Aufrufende Prozedur verlassen
Nein, die Tatsache, eine Prozedur/Funktion von einer aufgerufenden Prozedur/Funktion mitbeenden zu lassen.
|
Re: Aufrufende Prozedur verlassen
Wieso? Oft lass ich Exceptions auch bis ganz oben durchkommen, damait dann einfach eine Fehlermeldung kommt.
Wenn eine Vorrausetzung nicht gegeben ist - warum solltest du mit der Prozedur weitermachen ? |
Re: Aufrufende Prozedur verlassen
Zitat:
Aber mancher findet halt die C-Variante ganz gut, wo die Funktion Error() ja zumindest einen Rückgabewert haben könnte. Wodurch man dann in der selben Zeile mit einem "return Error(...)" die aufrufende Funktion verlassen kann :mrgreen: Ich persönlich stricke meinen Code in C immernoch lieber mit verschachtelten IFs statt mit kurzen IF-NOTs und return. Zitat:
Delphi-Quellcode:
täte es aber auch :-D ... oder noch "eleganter" (?):
function bla():TDingens;
begin if IsSthSelected(Listbox1) then begin // ... mach was end else begin Error('Sie müssen das Bild mindestens einem Gebäude zuordnen'); end; end;
Delphi-Quellcode:
function bla():TDingens;
begin if IsSthSelected(Listbox1) then begin // ... mach was end else Error('Sie müssen das Bild mindestens einem Gebäude zuordnen'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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