AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aufrufendes Objekt im Stack ermitteln

Ein Thema von BobTheBuilder · begonnen am 19. Jun 2020 · letzter Beitrag vom 22. Jun 2020
Antwort Antwort
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
BobTheBuilder

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

AW: Aufrufendes Objekt im Stack ermitteln

  Alt 22. Jun 2020, 11:22
Ich habe es jetzt so gelöst, dass beim Laden der DLL eine Liste erstellt wird, in die alle FEvents rein geschrieben werden beim Erstellen der Objekte und beim Zerstören kann dann das passende Objekt wieder aus der Liste gelöscht werden.

Damit bekomme ich zwar keine richtige Zuordnung, aber ich schreibe mir zu jedem FEvents dazu, ob es direkt auf die Exe verweist und dann ist es mir an sich egal, ob die Objekte jetzt über ihr eigenes FEvents mit der Exe kommunizieren oder über ein fremdes.

Ich hoffe mal nicht, dass das zu Problemen führen kann, erscheint mir jetzt so, dass das den Umständen entsprechend die beste Lösung ist.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz