Hi, I usually use objfpc mode, however I have a few units in delphi mode and don't know if it is a bug or normal delphi behaviour.
In the following program I have variable of type "procedure of object". If I assign a method of a class using object name: CM.Callback := CM.ContextMenuSelect; everything is ok. But I can also assign it using class name: CM.Callback := TContextMenu.ContextMenuSelect; The program obviously crashes with access violation in ContextMenuSelect on access to FFiles. Shouldn't this give a compilation error, or is it considered a programmer error? _______ program class_callback; {$mode delphi}{$H+} uses Classes; type TNotifyProc = procedure (Sender: TObject) of object; TContextMenu = class private FFiles: TStringList; public Callback: TNotifyProc; constructor Create; procedure ContextMenuSelect(Sender:TObject); end; constructor TContextMenu.Create; begin FFiles := TStringList.Create; FFiles.Add('Example string'); end; procedure TContextMenu.ContextMenuSelect(Sender:TObject); begin Writeln(FFiles[0]); end; var CM: TContextMenu; begin CM := TContextMenu.Create; // This works fine CM.Callback := CM.ContextMenuSelect; CM.Callback(CM); // This causes crash // Should this be allowed to assign? CM.Callback := TContextMenu.ContextMenuSelect; CM.Callback(CM); CM.free; end. -- cobines _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal