AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Event Handler in DLL

Ein Thema von iphi · begonnen am 20. Jan 2010 · letzter Beitrag vom 20. Jan 2010
Antwort Antwort
iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#1

Event Handler in DLL

  Alt 20. Jan 2010, 09:01
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Event Handler in DLL

  Alt 20. Jan 2010, 09:45
Hatten wir doch gerade erst. Die Ereignisprozedur muss die Methode einer Klasse sein. Das sagt doch auch schon ganz deutlich die Fehlermeldung.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#3

Re: Event Handler in DLL

  Alt 20. Jan 2010, 10:22
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz