Moin !
Wir haben in unserer Anwendung einen ganz Schwung an Units die wir gerne in DLLs auslagern würden um die Größe der EXE Datei zu reduzieren und um den Speicherverbrauch nach dem Start zu reduzieren.
Nun stellen sich uns da aber ein paar Fragen ...
1) Was muss man beachten wenn man eine normale
Unit in eine
DLL "umwandeln" will. Vor allem wenn ich bedenke das die Units teilweise auf die Anwendung zugreifen um z.B. bestimmte Eigenschaftswerte zu lesen / schreiben.
Also würde z.B. sowas funktionieren aus einer
DLL:
Form1.Label.text := 'Hallo Welt'
Oder würde sowas zu Problemen führen ?
2) Die Units werden ja (so hoffe ich mal) dann nachgeladen wenn die beinhalteten Funktionen / Proceduren benötigt werden. Wenn die
DLL aber danach nicht mehr weiter benötigt wird, wird sie dann auch wieder aus dem Speicher entfernt? Also gibt es eine Art "Free" für die DLLs, oder macht das Windows im Hintergrund dynamisch selber?
3) Wir haben einige Units die eine weitere
Unit mit Formular verwenden. Also in der normalen
Unit steht der Code um Daten umzurechnen und die Formulare dienen dann für Einstellungen die man dazu tätigen kann. Das müsste man ja dann in 2 DLLs auslagern. Stellt es dann ein Problem da wenn man von der ersten
Unit (Berechnung) auf die zweite
Unit mit dem Formular zugreifen muss um dort bestimmte Settings für die Berechnung abzuchecken?
Oder kann man mit den DLLs letztlich genauso arbeiten als hätte man eine "normale"
Unit (bzw.
Unit mit Formular) im Projekt eingebunden?
4) Kann man in eine
DLL überhaupt ein Formular packen ?!
5) Ergeben sich andere Nachteile durch die Verwendung von DLLs oder gibt es da besondere Stolpersteine wo man aufpassen sollte?
Und noch als Nachtrag ... Gibt es mitunter bessere Lösungen als DLLs?