bei diesem Code ist in der PropList nur MyDouble vorhanden.
Wie kann man den Record auch noch regiestrieren? Damit er in die Liste kommt?
Hier mal der Code:
Delphi-Quellcode:
uses
typinfo;
type
TMyRecord = record
Value1 : Integer;
Value2 : Integer;
end;
TMyClass = class(TPersistent)
private
FDouble : Double;
FMyRecord : TMyRecord;
published
property MyDouble : Double read FDouble write FDouble;
property MyRecord : TMyRecord read FMyRecord write FMyRecord;
end;
procedure TForm1.btnRTTIClick(Sender: TObject);
var
i, Count: Integer;
PropList: PPropList;
s:string;
sl : TStringList;
myObject : TMyClass;
typeInfo : PTypeInfo;
begin
sl := TStringList.Create;
myObject := TMyClass.Create;
TypeInfo := myObject.ClassInfo;
Count := GetPropList(typeInfo ,tkProperties,nil);
GetMem(PropList, Count * SizeOf(PPropInfo));
GetPropList(TypeInfo, tkProperties, PropList);
for I := 1 to Count do begin
s := PropList^[i - 1].Name;
sl.Add(s);
end;
ShowMessage(sl.Text);
FreeMem(PropList);
myobject.free;
sl.Free;
end;
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.