Auch wenn die beiden Klassen aus der gleichen
Unit stammen, sind die Klassen in der EXE und
DLL anders und du darfst die nicht einfach so übergeben.
Inwiefern sind die Klassen anders? Also z.B. hier der TMemoryStream?
Probier doch einfach mal mit is bzw. as zu arbeiten.
Dann bekommst du den hier schon gefühlt Tausend mal gemeldeten Fehler
"Im Projekt Test.exe ist eine
Exception der Klasse EConvertError mit der Meldung 'TPngImage kann nicht zu TPicture zugewiesen werden' aufgetreten."
(Wobei die Klassennamen unterschiedlich sind). Dort wurde auch schon tausend mal erklärt wieso das Auftritt wenn man ohne Runtimepackages arbeitet und versucht Instanzen zwischen
DLL und Exe auszutauschen.
Alles andere führt zu komischen Ergebnissen.
Ich hatte bislang (also bis Delphi XE6 bzw. Kombination aktuelle Delphis +
DLL <= XE6) in der Verwendung
VCL-APP zu FMX-
DLL keine komischen Ergebnisse, sondern nur funktionierende Programme.
War mehr oder mindern Zufall. Wir hatten auch vor Jahren so eine
DLL-Konstrukt im Einsatz. Und hatten "funktionierende" Programme die halt ab und zu sich komisch verhalten haben.
Als wir das
DLL-Konstrukt raus geschmissen hatten verschwanden auch dieses "komische Verhalten" von der wir nicht genau zuordnen konnten woher es kommt.
Habe grade mal eine FMX-
DLL erstellt, die nur eine Procedure "ShowAForm" exportiert (also ohne Parameter). Ihre einzige Aufgabe ist dann, wenn aufgerufen, eine leere FMX-Form anzuzeigen.
Also NULL Thema von wegen falscher Datenübergabe oder so. Und siehe da: Bei Freelibrary hängt das Programm.
Wer das immer noch nicht glauben mag: Ich habe diese Demo (XE8-Version) hier mal angehängt (Zuerst FMXFilters.dpr kompilieren = die FMX-
DLL) und dann die MyDLLDemo.dpr kompilieren (= die
VCL-App).
Wer hier etwas findet, das programmtechnisch falsch ist, ich lasse mich gerne eines Besseren belehren... aber momentan sieht das für mich nach einem BUG aus.
Das könnte auf das Thema "niemals
VCL und FMX in einem Programm verwenden" hinauslaufen. Wenn das aber in Exe/
DLL ohne Runtimepackages verpackt ist sollte es trotzdem funktionieren.
DAS würde ich auch als Fehler ansehen.
Windows Vista - Eine neue Erfahrung in Fehlern.