1
我在下面的代碼問題:德爾福2010 RTTI和指針字段
program Project4;
{$APPTYPE CONSOLE}
uses
SysUtils, RTTI;
type
TRecord2 = record
c: integer;
d: integer;
end;
TClass1 = class
public
FRecord: record
a: integer;
b: integer;
end;
FRecord2: TRecord2;
FPointRecord3: ^TRecord2;
constructor Create;
end;
constructor TClass1.Create;
begin
FPointRecord3 := nil;
end;
var
lContext: TRttiContext;
lType: TRttiType;
lFields: TArray<TRttiField>;
i: integer;
begin
try
{ TODO -oUser -cConsole Main : Insert code here }
lContext := TRttiContext.Create;
lType := lContext.GetType(TClass1);
lFields := lType.GetFields;
for i := 0 to Length(lFields) - 1 do
begin
write('Name = '+lFields[i].Name+', ');
if lFields[i].FieldType <> nil then
writeln('Type = '+lFields[i].FieldType.ToString)
else
writeln('Type = NIL!!!');
end;
lContext.Free;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
輸出:
Name = FRecord, Type = :TClass1.:1
Name = FRecord2, Type = TRecord2
Name = FPointRecord3, Type = NIL!!!
lFields [I] .FieldType返回NIL 如何獲得與RTTI類型的指針類型的字段?
我有同樣的代碼,你只落後2秒:-) – 2010-06-21 16:13:51
謝謝。有用。 – Mielofon 2010-06-22 04:20:31