我想将一个复杂/长记录转储到备忘录中以进行调试
TmyRecord =
aValue : String
aNumber : Real;
Morenumbers : Integer ;
....
....
end;
Run Code Online (Sandbox Code Playgroud)
我认为Delphi XE 2 RTTI应该让我有机会在循环中获取Fieldname,Fieldtype和value,将此记录写入备忘录或.....
MBo*_*MBo 14
作为起点 - 用简单类型记录.对于复杂的字段(数组,类等)探索RTTI单元
type
TmyRecord = record
aValue: String;
aNumber: Real;
Morenumbers: Integer;
end;
var
m: TMyRecord;
rtype: TRTTIType;
fields: TArray<TRttiField>;
i: Integer;
begin
m.aValue := 'OK';
m.aNumber := Pi;
m.Morenumbers := 666;
rtype := TRTTIContext.Create.GetType(TypeInfo(TMyrecord));
Memo1.Lines.Add(rtype.ToString);
fields := rtype.GetFields;
for i := 0 to High(fields) do
Memo1.Lines.Add(Format('%s: %s :: %s', [
fields[i].Name,
fields[i].FieldType.ToString,
fields[i].GetValue(@m).ToString]));
Run Code Online (Sandbox Code Playgroud)
输出:
TmyRecord
aValue: string :: OK
aNumber: Real :: 3.14159265358979
Morenumbers: Integer :: 666
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5858 次 |
| 最近记录: |