Thema: Delphi Initialisationsreinfolge

Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5

Re: Initialisationsreinfolge

  Alt 30. Jun 2006, 13:12
Zitat:
Also wie gesagt, PACKAGEINFO bringt nichts und an den InitContext kommt bißher kein Code selbstständig ran
Doch man kommt, das hatte ich aber oben schon beschrieben

Du kompilierst dein Modul mit .MAP Files. Suchst darin InitConntext und dessen Addresse und nimmst eine public globale Variable deiner Wahl aus Unit System.pas, deren Addresse und berechnet per Subtraktion einen Offset. Ausgehend von der Addresse der public Variablen + dem Offset berechnet aus dem Map File kannst du zur Laufzeit auf InitContext zugreifen. Das geht natürlich nur für eine jeweilige Delphi Version und ist wie immer bei solchen Sachen ein Hack/Trick. Aber was besseres kenne ich auch nicht.

Eines weis ich mit Gewissheit: mein Debugging Modul für mein modulares Frame Produkt benutzt diese Tricks und kann sehr wohl zur Laufzeit und dynamisch jeden Addressbereich zu einem Unitnamen auflösen. Dh. wir benötigen also die Namen der Units und die Addressbereiche die sie zur Laufzeit im Modul belegen. Und das ist ja was du suchst. Denn wenn man das hat weis man auch an Hand der Addressen der Init/Finit Prozeduren der Units deren Unitnamen, über InitContext die Reihenfolge in der Unit System.pas wie diese Init/Finit Prozeduren aufgerufen werden.

Gruß Hagen
  Mit Zitat antworten Zitat