Hello, Consider the following sample:
=== begin code === type TMyProc = procedure(ABytes: array of Byte; out AOutput: AnsiString); TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private class var FMyProc: TMyProc; public class constructor Create; class procedure DoMyProc(ABytes: array of Byte; out AOutput: AnsiString); overload; static; class property MyProc: TMyProc read FMyProc write FMyProc; end; var Form1: TForm1; implementation {$R *.lfm} procedure TForm1.Button1Click(Sender: TObject); var S: AnsiString; begin MyProc([65, 66, 67], S); ShowMessage(string(S)); end; class constructor TForm1.Create; begin FMyProc := @DoMyProc; end; class procedure TForm1.DoMyProc(ABytes: array of Byte; out AOutput: AnsiString); begin SetLength(AOutput, Length(ABytes)); Move(ABytes[0], AOutput[1], Length(ABytes)); end; === end code === The code above compiles fine in Delphi (tested in XE 7), but in FPC I got the following compiling error: Unit1.pas(46,14) Error: Incompatible types: got "<class method type of procedure({Open} Array Of Byte;out AnsiString) of object;Register>" expected "<procedure variable type of procedure({Open} Array Of Byte;out AnsiString);Register>". Is this a bug or I need to enable some switch? Thank you! -- Silvio Clécio My public projects - github.com/silvioprog
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal