Einzelnen Beitrag anzeigen

andimx

Registriert seit: 14. Apr 2005
Ort: Hohenstein-Ernstthal
67 Beiträge
 
#4

Re: Plugin-DLL für ein USBLCD soll Daten an Hauptprogramm se

  Alt 17. Jun 2006, 19:48
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
  Mit Zitat antworten Zitat