Versteh mich nicht falsch, aber für so "simple" Funktionen ist es nicht wesentlich einfacher, sicherer und klarer, Interfaces zu schreiben und diese durch exportierte Funktionen zurückgeben zu lassen?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| type IFoo = interface ['{4C1DD91B-AA83-43AE-9064-9181B156EFF2}'] procedure DoSomething; function ReturnString: WideString; end;
function CreateFoo: IFoo;
exports CreateFoo; |
Importieren geht praktisch genau so einfach.
Delphi-Quelltext
1:
| function CreateFoo: IFoo; external 'Foo.dll'; |
Das hier ist übrigens ein extrem Hack:
HelgeLange hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4:
| function TMyPlugin.DoSillyThings(Parameter:pointer): pointer; begin TForm(Parameter).Color := random(999999); end; | |
Das Argument
Parameter mag zwar für die Basisapplikation ein
TForm sein, aber nicht das gleiche
TForm wie in der DLL. Du wendest hier praktisch die Daten aus der Basisapplikation auf die Implementation des Plugins an (!). Der Ausdruck
TObject(Parameter) is TObject würde false zurückgeben.
So geht das natürlich nicht