Einzelnen Beitrag anzeigen

BobTheBuilder

Registriert seit: 10. Apr 2019
18 Beiträge
 
#1

Aufrufendes Objekt im Stack ermitteln

  Alt 19. Jun 2020, 16:51
Hallo zusammen,

ich war mir nicht sicher, was ich genau in den Titel schreiben soll. Ich hoffe, das passt in etwa.
Mein Problem ist folgendes:

Ich habe eine ActiveX/Com DLL in Delphi und eine Exe in einer anderen Sprache.

Die Exe instanziert sich jetzt ein Objekt der Hauptklasse der DLL.

Und dann ist da halt viel Code in verschiedenen Units der DLL, der stellenweise eine Information vom Hauptobjekt oder auch direkt der Exe braucht.

Als Beispiel kann hier die selbstimplementierte Funktion "ShowMessageErrorWithTitle" dienen. Da muss jedes mal frisch von der Exe erfragt werden, wo sich deren Hauptfenster befindet, damit die Error-Message darauf zentriert werden kann.

Das kann man über das Events-Objekt machen, das an dem Hauptobjekt der DLL pappt. Das funktioniert ansich auch wunderbar.

Aber es ist super unpraktisch, dieses Events-Objekt jetzt jeder Funktion mitzugeben, nur damit ich auch im hintersten Winkel der DLL noch eine Error-Message anzeigen kann.

Eine andere "Lösung" wäre es, dieses Events-Objekt in eine globale Variable zu schreiben, auf die jede Unit Zugriff hat. Das funktioniert, bis mehr als eine Instanz der Hauptklasse existiert, weil die sich ja gegenseitig diese globale Variable überschreiben.

Und genau an der Stelle stehe ich jetzt gerade.

Meine neuste Idee ist es nun, dass ich vielleicht abfragen kann, welche Instanz der Hauptklasse die Funktion aufgerufen hat, in der man gerade ist. Darüber würde ich dann immer an das richtige Events-Objekt gelangen.

Deswegen würde ich gerne wissen, ob man vielleicht irgendwie in eine x-beliebigen Funktion abfragen kann, was der Call-Stack ist und ob sich darin irgendwo ein Objekt vom gesuchten Typ befindet.

Geht sowas?

MfG

Bob
  Mit Zitat antworten Zitat