Zitat von
QuickAndDirty:
1. können sich die VMTs der
DLL und des Programms nicht "ins gehege kommen" das ist einfach quatsch. Habs viele hundert mal so gemacht ist ein Absolut zuverlässiges verfahren wenn man einige Dinge beachtet. Die units die Objecte hin und her reichen müssen mit den selben Schaltern und Optionen kompiliert sein. Objekte die im Programm erschaffen werden sind auch dort zu zerstören und umgekehrt das selbe.
Das mit dem "ins Gehege kommen" war wohl etwas unglücklich formuliert. Es ist aber so, dass die Typeninformationen der beiden TStringlist-Versionen in unterschiedlichen Datensegmenten liegen. Und das kann bei manchen Operationen zu extremen Problemen führen.
Zitat von
QuickAndDirty:
Der is operator geht aufgrund der unterschiedlichen Orte der
RTTI nicht ("Tstringlist ist nicht vom Typ TStringlist" beim TPersistent.Assign). Dem könnte man aber Abhilfe verschaffen wenn man in der Stystem
unit den is operator ändert so das er wie der von den InfoPower Komponenten genutzte wwIS funktioniert....
Ähm, wir sprachen hier aber nicht von einer geänderten System
Unit (wer macht denn so was???) sondern von normalem ungepatchten Delphi.
Zitat von
QuickAndDirty:
2.
Bpl haben
dll gegenüber einen gewaltigen Nachteil. Ich kann in einer
BPL keine Programm
unit mit einem anderen Schalter kompiliert verwenden so das ich
BPL seitig ein anderes Kompilat verwende als in dem Programm. (Gleiche kompiler schalter braucht man bei DLLs ja nur für Objekte die die Seite wechseln, nicht für alles.)
Diese Behauotung verstehe ich nun absolut nicht. Wie willst du denn in der
DLL andere Compilerschalter nur für die auszutauschenden Objekte verwenden? Die Einstellungen müssen, genau wie bei dem
Package global übereinstimmen.
Also, zusammenfassend: mit DLLs funtioniert es nur dann wenn beide beteiligten, also die Applikation und die
DLL, die selbe
VCL verwenden. Das heisst, dass sie mit Runtime-Packages erzeugt werden müssen (sonst liegen im Speicher später 2 komplette Kopien der
VCL rum!). Daraus folgt aber, dass die hier selben Einschränkungen gelten wie für Packages. Warum also nicht direkt Packages verwenden???
Nochmal ganz klar die Frage: Warum sollte jemand auf die Idee kommen für die Arbeit mit Delphi-Typen eine
DLL statt einem
Package zu verwenden? Man holt sich die Nachteile beider Varianten ohne einen der Vorteile zu haben.
Ciao,
Ralf