Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
Delphi 11 Alexandria
|
StackReturn
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.)
|