Im Prinzip genauso, wie mit den bekannten Event-Methoden der
VCL. (Button.OnClick usw.)
Delphi-Quellcode:
// EXE
type TMyProc: procedure({s: string}); // was Selbstdeklariertes oder was Fertiges, z.B. ala TNotifyEvent, TThreadMethod oder TThreadProcedure
function SetEvent(Value: TMyProc);
external MyDLL;
procedure MakeIt(...); // alternativ kann man auch den Event-Zeiger hier direkt übergeben
external MyDLL;
Delphi-Quellcode:
// DLL
type TMyProc:
procedure(
{s: string});
var Event: TMyProc;
// es muß keine globale Variable sein
function SetEvent(Value: TMyProc);
begin
Event := Value;
end;
procedure MakeIt(...);
// oder sonstwo ... z.B. aus einem Thread
begin
...
if Assigned(Event)
then
Event(
{s});
...
end;
Was für einen Zeiger man nimmt, dass kann man sich gern aussuchen.
Delphi-Quellcode:
type
TMyProc: procedure({s: string}); // nur Prozeduren und statische Klassenmethoden
TMyProc: procedure({s: string}) of object; // nur Objektmethoden und Klassenmethoden
TMyProc: reference to procedure({s: string}); // alles