![]() |
Event Handler in DLL
Hallo,
wie kann ich innerhalb einer DLL einen Eventhandler realisieren? Bsp: Ich erzeuge in meiner DLL ein Timerobjekt mit Vorfahre nil. In meiner DLL habe ich eine Procedur TimerEventHandler definiert. Die Zuweisung Timer.Ontimer:=TimerEventHandler wird vom Compiler aber als Fehler gemeldet. Wie mache ich das richtig? Hier der Code, der nicht geht:
Code:
library Project2;
uses SysUtils, Classes, ExtCtrls; {$R *.res} var Timer: TTimer; procedure TimerEventHandler(Sender: TObject); begin //mach was Timer.Enabled:=false; FreeAndNil(Timer); end; begin Timer:=TTimer.Create(nil); Timer.Interval:=1000; Timer.OnTimer:=TimerEventHandler; //hier Fehlermeldung [Error] Project2.dpr(22): Incompatible types: 'method pointer and regular procedure' Timer.Enabled:=true; end. |
Re: Event Handler in DLL
Hatten wir doch gerade erst. Die Ereignisprozedur muss die Methode einer Klasse sein. Das sagt doch auch schon ganz deutlich die Fehlermeldung.
|
Re: Event Handler in DLL
Super, danke! Das wars.
Für die Nachwelt: So gehts:
Delphi-Quellcode:
library Project2;
uses SysUtils, Classes, Forms, ExtCtrls; {$R *.res} type THandler=Class procedure TimerEventHandler(Sender: TObject); end; var Timer: TTimer; TestVar: integer; Handler: THandler; procedure THandler.TimerEventHandler(Sender: TObject); begin //mach was Timer.Enabled:=false; FreeAndNil(Timer); TestVar:=1; end; function Test: integer; cdecl; export; begin result:=testvar; end; exports Test; begin TestVar:=0; Handler:=THandler.Create; Timer:=TTimer.Create(nil); Timer.Interval:=1000; Timer.OnTimer:=Handler.TimerEventHandler; Timer.Enabled:=true; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 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