Thema: Delphi StackReturn

Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#1

StackReturn

  Alt 26. Feb 2021, 19:38
Hallo zusammen,

mal eine grundsätzliche Frage:

Ich habe verschachtelte Objekte, die rekursiv durchgearbeitet werden. Unter bestimmten Umständen muss ich die Rekursion abbrechen (also sofort aus der aktuellen Methode raus) und einige Ebenen höher weiter machen. Quasi also im Aufrufstack an eine bestimmte Stelle zurück springen.

Aktuell ermittle ich einen höher liegenden "Interessenten", der von den tieferen Objekten (über eine Owner-Kette) seine Zuständigkeit erklärt.
Die tieferen Objekte haben somit ihre Arbeit einzustellen, biss der "Interessent" weiter machen kann.

Dieses "Interessentenobjekt" wird aktuell in einer globalen Variable verwaltet.
Ist dieses definiert und das aktuelle Objekt nicht diesen "Interessenten-Objekt", muss es seine Methode verlassen.

Das funktioniert, aber gibt es eine bessere/elegantere Lösung?
Ich hatte irgendwie zunächst an Callbacks o.ä. gedacht, aber so richtig komme ich da gedanklich nicht klar.
Aktuell sehe ich keine bessere Lösung als den Abgleich mit einer "Interessenten-Instanz" und Exit aus den Methoden.


(Dass man diese Interessenteninstanz als Parameter weiter geben könnte, weiß ich. Das soll nicht das Problem sein.)


Anbei mal ein kleines Testprojekt.
(Kaspersky hatte die Exe mal bemeckert bei mir.)
Miniaturansicht angehängter Grafiken
26-02-_2021_19-21-34.png  
Angehängte Dateien
Dateityp: zip StackReturn.zip (414,4 KB, 3x aufgerufen)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat