【问题标题】:How to access record properties?如何访问记录属性?
【发布时间】:2014-05-03 14:34:17
【问题描述】:

我需要访问、记录属性并设置/获取此属性值。 首先,我想访问属性。但我不能。

怎么了? 版本:Delphi 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;

【问题讨论】:

  • FWIW,不需要在 TRttiContext 上调用 Free 甚至不需要调用 Create

标签: delphi record rtti


【解决方案1】:

您的问题是 2009 年已报告的记录属性没有可用的 RTTI,但仍未修复 (QC#78110)。

编辑: 2017 年仍未修复 (RSP-19303)。

【讨论】:

    猜你喜欢
    • 2014-04-07
    • 2020-08-25
    • 2017-09-25
    • 2022-01-24
    • 2019-10-26
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多