Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.838 Beiträge
Delphi 10 Seattle Enterprise
|
Re: Problem mit GetClass in stat. App bei dyn. geladenen Pac
12. Mär 2009, 15:40
- Wenn "keine Laufzeitpackages" beim Kompilieren ausgewählt ist, passiert Folgendes:
Dem Compiler sind alle Packages egal.
Bei einem Build: (Projekt erzeugen)
Es werden einfach alle *.pas Dateien kompiliert, die in der uses Anweisung des Programms (*.dpr) und der einzelnen Units (*.pas) angegeben sind kompiliert und dann die entsprechende *.dcu eingebunden (gelinkt). Wenn keine *.pas Datei vorhanden ist, wird direkt die entsprechende *.dcu eingebunden.
-> Es entsteht eine Exe Datei, die alles eingebunden hat und keine Packages braucht.
Du benötigst zum Kompilieren:- Deine Projektdateien (*.dpr, *.pas, *.dfm, *.res)
- alle von Dir verwendeten *.dcu Dateien der VCL, Komponenten, ... (z.B. aus "$(DELPHI)\lib")
Du benötigst zum Starten des Projekts:
- Wenn „mit Laufzeitpackages“ beim Kompilieren ausgewählt ist, passiert Folgendes:
Es wird vor dem Kompilieren der *.pas Dateien geschaut, ob diese in einem Package enthalten sind. Wenn ja, dann wird die *.dcu nicht eingebunden, sondern auf as Package verwiesen.
Es werden also nur die *.pas Dateien kompiliert und *.dcu Dateien eingebunden, die in keinem Package enthalten sind. Also die, die zum Projekt gehören.
Um die Anwendung starten zu können, sollten dann alle statisch verlinkten Runtime-Packages vorhanden sein.
Natürlich werden auch alle Packages, die in dem requires Abschnitt verwendeten Packages aufgelistet sind, benötigt.
DesignTime Packages werden zum Kompilieren nicht benötigt, sie enthalten "nur" den Code, der von der IDE benötigt wird um während der DesignTime (also der Programmerstellung in der IDE) ausgeführt zu werden.
(Zum Beispiel Property-Editoren und Component-Editoren, Wizards, IDE-Plugins, ...)
Du benötigst zum Kompilieren:- Deine Projektdateien (*.dpr, *.pas, *.dfm, *.res)
- Packagedateien (*.dcp)
- alle von Dir verwendeten *.dcu Dateien, die nicht in einem Package stecken.
Du benötigst zum Starten des Projekts:- Deine Exe Datei
- alle verwendeten Packagedateien (*.bpl)
Ein Sonderfall ist ein Package, dort werden zum Kompilieren noch nicht mal die *.dcu Dateien der in requires angegebenen Package benötigt, es reicht die *.dcp Datei, in der alle relevanten Informationen der dcu's enthalten sind. Wichtig bei DesignTime Packages, zu denen die *.dcu fehlen. (z.B. Proxy.dcu)
siehe auch Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.dcu
Ich hoffe die Infos helfen Dir.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
|
|
Zitat
|