Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何访问记录属性?_Delphi_Record_Rtti - Fatal编程技术网

Delphi 如何访问记录属性?

Delphi 如何访问记录属性?,delphi,record,rtti,Delphi,Record,Rtti,我需要访问、记录属性,并设置/获取此属性值。 首先,我想访问属性。但我不能 怎么了? 版本:DelphiXe6 示例代码: type TmyRecord = record private Str : String; public property StrProp :String read Str; end; procedure TForm1.Button3Click(Sender: TObject); var c : TRttiContext; t :

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

怎么了? 版本:DelphiXe6

示例代码:

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;

您的问题是,2009年报告的记录属性没有可用的RTTI,但仍然没有修复()


编辑:在2017年仍未修复()。

FWIW,无需在TrtContext上调用Free,甚至无需调用Create