Callback ist das einzige was da wirklich gut wäre.
Mit einer Callback schleife kannst du Compiler unabhängig einbindungen realisieren.
Hier mal ein Beispiel. Deklaration der Callback Schleife:
var MyCallback: procedure(const Param1: Integer; const Param2: WideString); stdcall;
Dann die funtion in der
DLL:
Delphi-Quellcode:
function AssignCallback(Callback: Pointer): Boolean; stdcall; export;
begin
Result := Assigned(Callback);
if (Result) then MyCallback := Callback;
end;
Dann willst du ja irgendwann mal aus deiner
DLL daten ans Hauptprogramm schicken:
Delphi-Quellcode:
function ProcRun: Boolean;
var x: Integer; p: WideString;
begin
x := 100;
p := 'Test';
if Assigned(MyCallback) then MyCallback(x, p);
end;
Dynamischer Load und Einbindung ins Hauptprogramm:
Delphi-Quellcode:
var xAssignCallback:function (callback: Pointeger): Boolean; stdcall;
.
.
@xAssignCallback := GetProcAddress(hDll, 'AssignCallback');
.
.
Hauptprogramm:
procedure OnMyCallback(const Param1: Integer; const Param2: WideString); stdcall;
begin
end;
Procedure FormLoad(Sender: Tobject);
begin
xAssignCallback(OnMyCallback);
end;
fertig.
gruß
Andi