Zitat:
Das dürfte sich also generell schwierig gestalten...
Nicht unbedingt. Alle Module die gemeinsam auf Klassen zugreifen wollen müssen die Packages die diese Klassen deklarieren benutzen. Z.b. eine EXE lädt eine Formular
DLL und eine Report
DLL. Alle drei Module benutzen die Packages
VCL??.bpl und VCLDB??.bpl. Da nun die gemeinsam genutzen Klassen in diesen Packages enthalten sind existiert deren Klassendefinition auch nur EINMALIG im
Package. Alle Zugriffe auf diese Klasse aus der EXE und den beiden
DLL's laufen auf Zugriffe in das Packages hinaus. Somit ist alles wieder richtig, denn diese Klasse existiert global für alle anderen Module nur einmal. Als Seiteneffekt bei größeren Projekten reduziert sich der Resourcenverbrauch. Z.b. ein Projekt mit 1 EXE und 50 Formular-
DLL's + 200 Report-
DLL's benötigt pro
DLL ca. 50 Kb. 251 * 50Kb = 13Mb + Packages 7Mb = 20Mb für alle Module.
Ohne Packages werden alle benötigten Parts der
VCL in das Modul eingelinkt. Wir wissen das eine einfache EXE dann sofort 400Kb groß wird. Dies trifft auf
DLL's genauso zu. Also: 251 * 400Kb = 100Mb, schon 4 mal soviel wie mit Packages.
Grundsätzlich kann man die
VCL+Klassen nicht in einfache
DLL's global benutzen. Ich weis es gibt im WEB viele Anleitungen wie man zB. Formulare in
DLL's benutzen kann, aber im Grunde sind diese alle falsch.
Gruß Hagen