我需要访问、记录属性并设置/获取该属性值。
首先,我想访问属性。但我不能。
怎么了?
版本:德尔福 XE6。
示例代码:
type
TmyRecord = record
private
Str : String;
public
property StrProp :String read Str;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
c : TRttiContext;
t : TRttiType;
field : TRttiField;
prop : TRttiProperty;
begin
c := TRttiContext.Create;
try
Memo1.Lines.Append('Fields');
for field in c.GetType(TypeInfo(TMyRecord)).GetFields do
begin
t := field.FieldType;
Memo1.Lines.Append('Field:'+field.Name);
Memo1.Lines.Append('RttiType:'+t.ClassName);
end;
Memo1.Lines.Append('Properties');
for prop in c.GetType(TypeInfo(TMyRecord)).GetProperties do
begin
t := prop.PropertyType;
Memo1.Lines.Append('Property:'+prop.Name);
Memo1.Lines.Append('RttiType:'+t.ClassName);
end;
finally
c.Free
end;
end;
您的问题是,没有可用于记录属性的 RTTI,正如 2009 年已报告的那样,但仍未修复(QC#78110).
Edit:2017年仍未修复(RSP-19303).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)