Einzelnen Beitrag anzeigen

Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#1

Inkompatible Typen: Reguläre Prozedure und Methodenzeiger

  Alt 12. Dez 2007, 11:45
Hallo!

Folgende Situation:

Delphi-Quellcode:
unit A;

type
  TPassiertWas = procedure(Param1, Param2: String);

  TMyObject = class(TObject);
  private
    FOnPassiertWas : TPassiertWas;
  public
    procedure TuWas;
    property OnPassiertWas: TPassiertWas read FOnPassiertWas write FOnPassiertWas;
  end;

...

procedure TMyObject.TuWas;
begin
  ...
  if (Assigned(FOnPassiertWas) then FOnPassiertWas('eins', 'zwei');
end;
Delphi-Quellcode:
unit B;

uses
  A;

type
  TMyIrgenwas = class(TObject);
  private
    FMyObj: TMyObject;
    procedure Reagiere(Param1, Param2: String);
  public
    constructor Create;
  end;

...

constructor TMyIrgenwas.Create;
begin
  FMyObj := TMyObject.Create;
  FMyObj.OnPassiertWas := Reagiere; // <-- Fehler: Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger'
end;

procedure TMyIrgendwas.Reagiere;
begin
  MachWas();
end;

Was mache ich hier falsch? Warum kann ich dem Eventhandler OnPassiertWas nicht die Methode Reagiere zuweisen? Reagiere ist eine Methode einer klasse und keine reguläre Prozedur. Wo liegt also der Fehler?

Besten Dank
Ares
  Mit Zitat antworten Zitat