Peter Vreman wrote:
Please submit always complete code. Now we need to guess what is wrong and in a lot of cases we can't reproduce it with our own code like in this situation. The code below works perfectly:
Sorry about that. Strangely enough, your example runs fine here as well. Below is my complete code that fails. Moving the $M around the actual class declaration makes it work.
I am using FPC 2.0.1 that came with Lazarus 0.9.10 on Windows 2000. ------------------------------------------------ unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons, StdCtrls; type {$M+} TMyTestObject = class; {$M-} TForm1 = class(TForm) Button2: TButton; Memo1: TMemo; procedure Button2Click(Sender: TObject); private public end; TMyTestObject = class(TObject) private FIntProp: integer; FStringProp: string; public published property StringProp: string read FStringProp write FStringProp; property IntProp: integer read FIntProp write FIntProp; end; var Form1: TForm1; implementation uses TypInfo; procedure TForm1.Button2Click(Sender: TObject); var O: TMyTestObject; i: Longint; lPropFilter: TTypeKinds; lCount: Longint; lSize: Integer; lList: PPropList; begin O := TMyTestObject.Create; lPropFilter := [tkInteger, tkAString]; lCount := GetPropList(O.ClassInfo, lPropFilter, nil, false); lSize := lCount * SizeOf(Pointer); GetMem(lList, lSize); memo1.Lines.Add('Total property Count: ' + IntToStr(lCount)); lCount := GetPropList(O.ClassInfo, lPropFilter, lList, false); for i := 0 to lCount-1 do begin memo1.Lines.Add('Property '+IntToStr(i+1)+': ' + lList^[i]^.Name); end; FreeMem(lList); O.Free; memo1.Lines.Add('---------------'); end; initialization {$I unit1.lrs} end. ------------------------------------------------ Regards, - Graeme - _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel