![]() |
Lösung gesucht für dynamischen Ausstieg aus Prozed.
Hallo!
Mein Problem zu der genannten Frage oben ist, dass ich ein Programm habe, welches an vielen Stellen überprüft, ob ein Fehler auftritt. Wenn dies der Fall ist, soll der Programmablauf unterbrochen werden (Timer usw. also periodisch auftauchende und -ablaufende Funktionen ausgenommen, die sind davon nicht betroffen), also so, dass das Programm wieder auf eine Benutzereingabe wartet (zB... "Ein Fehler in ihrem Code wurde gefunden. Bitte korrigieren sie diese und rufen sie dann erneut auf" - in der Art). Das Problem ist eben nur, dass ich dann eine bool-Variable habe, und wenn die auf "true" geschaltet wird (von einer Prüfprozedur), so soll dieser "Stoppeffekt" eintreten... da diese Prüfprozeduren aber mittendrin und häufig stehen, müsste ich dann jede/n einzelne/einzelnen Anweisung/Anweisungsblock mit einer Abfrage der bool-Variablen koppeln... und das ist zu schreibaufwändig, wie ich finde, es sollte ja eine Möglichkeit geben, dies zu umgehen... Gibt es also so etwas wie ein "Gloabl-Break" (wie für Schleifen), dass alle Prozeduren, die gerade laufen (also auch die Prozedur, die die Prozedur aufgerufen hat, in der sich die Prüfprozedur befindet, die rumgemeckert hat usw...), beendet werden? Massenhaft Ruhm und Ehre winken dem schnellen Antwortenden xD (Also danke schonmal) |
Re: Lösung gesucht für dynamischen Ausstieg aus Prozed.
Du könntest die eine benutzerdefinierte Exception generieren.
|
Re: Lösung gesucht für dynamischen Ausstieg aus Prozed.
Zitat:
Delphi-Quellcode:
raise Exception.Create('Es trat ein Fehler auf.');
![]() |
Re: Lösung gesucht für dynamischen Ausstieg aus Prozed.
hmmm. Und die Exception bricht dann alle laufenden Prozesse wie ich geschildert habe ab?
Edit... Scheint der Fall zu sein (habs ne weile getestet. In einer Try..Except-Umgebung löst es aber den Except-Teil aus. Gibt es eine Möglichkeit, dass der Except-Teil da nicht ausgelöst wird? |
Re: Lösung gesucht für dynamischen Ausstieg aus Prozed.
Zitat:
Laufen noch Prozesse in anderen Threads werden diese natürlich nicht abgebrochen, da sie in der "Treppe nach oben" nicht vorkommen. |
Re: Lösung gesucht für dynamischen Ausstieg aus Prozed.
Zitat:
mfG Markus |
Re: Lösung gesucht für dynamischen Ausstieg aus Prozed.
Zitat:
Delphi-Quellcode:
Behandelt alle angebenen Exception und alle anderen gehen in meiner "Treppe" eine Stufe hoch...
try
... except on EZeroDivide do HandleZeroDivide; on EOverflow do HandleOverflow; on EMathError do HandleMathError; end; |
Re: Lösung gesucht für dynamischen Ausstieg aus Prozed.
Hm nun gut ... insgesamt hat das jetzt funktioniert (mit noch n paar tricks)
Aber da tritt jetzt so ein unbeschreiblicher Fehler auf... über ein bisher funktionierenden (großen) code "Stülpte" ich einfach eine try..except-umgebung, etwa so... try //code ... except cannotproceed := true; end; Eine Accessviolation erscheint. Wieso? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 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