Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#1

RuntimePackage laden/verwenden

  Alt 12. Mär 2009, 11:51
Hallo Leute,

ich möchte hier für mein Problem ein neues Thema aufmachen. Begonnen hatte ich mit einer Antwort (eher weiteren Frage) in BaBuSE's Thread Probleme mit GetClass ....
Für den benannten Thread und deren Titel ist die Frage beantwortet. Mein Problem aber leider nicht. Somit möchte ich hier einen neuen Thread als offene Frage aufmachen.

Hier noch mal das, was ich machen will:
Ich habe folgende Module:
- BasePackage (enthält die Basisformulare und Komponenten; erstellt für Runtime und Designtime)
- SpezialPackage (enthält spezielle Formulare als Nachfahren der Basisformulare aus BasePackage; erstellt für Runtime)
- MyApp (enthält Nachfahren aus BasePackage und soll spezielle Formulare mittels LoadPackage aus SpezialPackage verwenden)

Dabei muß ich in MyApp mittels GetClass sowohl für die Formulare und Komponenten in BasePackage und in SpecialPackage arbeiten.
Alle benötigten Klassen sind mittels RegisterClass im initialization-Teil der Units registriert.


Mein aktuelles Problem stellt sich wie folgt das (letzer Beitrag von mir in MaBuSE's Thread):
Zitat:
Ich habe mir im Debugger die Aufrufe meiner vererbten Klasse angesehen und festgestellt, dass da ein Versatz drin ist. Das passt schon mal zu dieser Aussage:
Zitat:
Das liegt unter anderem daran, das die Adresstabellen anders aufgebaut sind, je nachdem ob die Anwendung mit oder ohne Runtime Packages arbeitet. Es werden beim Compilieren durch den Schalter RuntimePackages viele grundlegende interne Dinge komplett anders gemacht. Es ist also nicht "nur" die verwendeten Package in die Exe gelinkt, sondern wie schon Geschieben, es wird viel mehr gemacht.
So wie es aussieht trifft das jetzt genau bei mir zu. Leider drehe ich mich da im Kreis.

Meine Anwendung die das Package laden soll besitzt Formuare aus BasePackage. Konkret auch das MainForm. Somit habe ich mein BasePackage als Design- und RuntimePackage kompiliert. Ich brauch ja die Formulare und Komponenten zum Designen meiner Anwendung. Das SpezialPackage ist als Runtimepackage kompiliert und enthält ein speziellen Formular als Nachfahre eines Forms aus BasePackage. Diese SpezialPackage soll dann von meiner Anwendung zur Laufzeit nachgeladen werden.
Jetzt habe ich den Verdacht, dass meine Anwendung ja das BasePackage als Designtime-Package verwendet, obwohl ich Laufzeitpackages verwenden ausgewählt und mein BasePackage mit eingetragen habe. Wird mein SpezialPackage als Laufzeitpackage geladen, welches natürlich auch BasePackage beinhaltet, so habe ich wieder den Mischbetrieb.
Dahinter kann ich aktuell keine rechte Logik erkennen, aber die Erscheinungen lassen sich für mich mit dem gesagten erst mal nur so erklären.

Meine erste Frage
Liege ich damit richtig?

Meine zweite Frage
Welche Alternative habe ich?

Meine dritte Frage
Mache ich in meiner Exe etwas falsch mit der Einbindung der Packages und wie sorge ich konkret dafür, dass nur RuntimePackages verwendet werden?
Ja, was nun sprach Zeus, die Götter sind besoffen.

Wenn jemand helfen oder einfach Licht ins Dunkel bringen kann ... Jedwede Hilfe wird dankbar angenommen.

Gruß oki
42
  Mit Zitat antworten Zitat