![]() |
Funktion die über einen Pointer von Dll aufgerufen wird
Ich möchte von (m)einer Anwendung aus eine Funktion aus (m)einer DLL aufrufen.
Nun möchte ich wie in EnumWindows einen Pointer, auf eine Funktion der Anwendung zeigend, übergeben, welche die DLL dann aufrufen kann, wann es ihr beliebt. Also wie in EnumWindows. Wie stelle ich das am besten an? (sorry für die blöde überschrift, aber was soll man da denn schreiben ...) Danke für jede Antwort, ciao, Philipp |
Re: Funktion die über einen Pointer von Dll aufgerufen wird
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:
Jetzt kannst Du den Typ in der DLL verwenden
type
TMyCallback = procedure(const AiValue : integer);
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:
Ungetestest sollte aber so gehen.
// 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; |
Re: Funktion die über einen Pointer von Dll aufgerufen wird
Danke, das war das was ich suchte.
ciao, Philipp |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz