Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: In DLL Funktion aus Hautprogramm verwenden - Funktion als Parameter?

  Alt 16. Okt 2011, 21:59
Du deklarierst im Programm und in der DLL den Funktionstyp, z.B.:
Delphi-Quellcode:
type
  TAddiere =Function(const a,b:Integer):Integer;
legst die Funktion in Deinem Programm an
Delphi-Quellcode:
Function Addiere(const a,b:Integer):Integer;
begin
  Result := a + b;
end;
übergibst der DLL den Callback
   InitProc(@Addiere);
merkst Dir in der DLL die Adresse der Funktion:

Delphi-Quellcode:
Procedure InitProc(f:TAddiere);
begin
  FAddiere := f; // irgendwo deklariert als f:TAddiere;
end;
verwendest die funktion in der DLL

Z :=Faddiere(x,y) Wenn Du auf Methoden zugreifen willst lautet die Deklaration
  TAddiere =Function(const a,b:Integer):Integer of object;
Wie immer Strings und andere dynamische Strukturen nur mit Sharemem ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat