Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Funktion die über einen Pointer von Dll aufgerufen wird

  Alt 1. Jun 2004, 16:49
Moin Philipp,

der Begriff, der Dir fehlte ist Callback Funktion.

Das Prinzip ist ganz einfach.
Du deklarierst Dir einen Typ, der die Funktion/Prozedur Deklaration enthält, z.B.

Delphi-Quellcode:
type
  TMyCallback = procedure(const AiValue : integer);
Jetzt kannst Du den Typ in der DLL verwenden

Delphi-Quellcode:
// DLL
procedure EnumRandom(const AiCount : integer;const ACallback : TMyCallback);

var
  i : integer;

begin
  randomize;
  for i := 1 to AiCount do begin
    ACallback(Random(50));
  end;
end;
Delphi-Quellcode:
// Anwendung
// Annahme: Die DLL Funktion wurde unter ihrem Namen importiert

// Die Funktion die Aufgerufen werden soll.
procedure EnumCallback(const AiValue : integer);
begin
  Form1.Memo1.Add(IntToStr(AiValue));
end;

// Es werden 10 Zufallszahlen von 0 bis 49 in ein Memo geschrieben
procedure TForm1.Button1Click(sender: TObject);
begin
  EnumRandom(10,@EnumCallback);
end;
Ungetestest sollte aber so gehen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat