[Lazarus] Can't assign event procedure....

Bo Berglund bo.berglund at gmail.com
Sat Oct 13 20:43:43 CEST 2018


This is what I have:

In a unit where a logging class is defined:

type
  TRxEvent = procedure (const Buffer: TBytes) of object;
...
  TWiFiCommLogger = class(TThread)
  private
  ...
    FOnRxData: TRxEvent;
  ...
  public
  ...
    property OnRxData: TRxEvent read FOnRxData write FOnRxData;
  ...
end;

procedure TWiFiCommLogger.Execute;
begin
  while not Terminated do
  begin
     ...
      if Assigned(FOnRxData) then
      begin
        FOnRxData(FBuffer);
        SetLength(FBuffer, 0);
      end;
     ...

Then in the form unit where I want to use this:
...
  private
...
    procedure OnRxSS(Buf: TBytes);
...
end;

In the form constructor:

procedure TfrmCommTest.FormCreate(Sender: TObject);
...
  FLogSS := TWiFiCommLogger.Create;
  FLogSS.OnRxData := OnRxSS;  // <== Error on this line
...

When I compile this I get the following error:

formcommtest.pas(112,22) Error: Incompatible types: got
"TfrmCommTest.OnRxSS(TBytes);" expected "<procedure variable type of
procedure(const TBytes) of object;Register>"


What am I doing wrong here?

I have written similar types of programs where I have used this kind
of construction and it has worked fine (in Delphi).
 
Both the form file and the unit where the handler class is defined
have been set to:

{$mode Delphi}



-- 
Bo Berglund
Developer in Sweden



More information about the Lazarus mailing list