德尔福:解析未知结构的记录

2 delphi

有没有办法记录并以编程方式遍历其所有字段而不明确地执行"Record.somefield"?

我想要做的是将记录保存/加载为INI文件的通用函数,这样我就可以在记录结构中添加或删除字段,而不必在每次删除或添加字段到记录时重写保存/加载函数.

换句话说,我想以某种方式迭代(伪代码):

THuman = record  
  age: integer;  
  country: string ;  
end;  
...  
myPerson: THuman;  
...  
    foreach Field in myPerson do
    begin
      if Field.value is String then ini.WriteString( 'Group', Field.Name, Field.value );
      if Field.value is integer then ini.WriteInteger( 'Group', Field.Name, Field.value );
    end;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我想这样做的原因是因为我在使用非有界字符串时无法保存类型字段.对我来说,文件是人类可读的也是有益的.所以我正在保存它们和INI文件.

dum*_*uch 5

没机会.记录没有附加运行时类型信息.如果您使用的是具有已发布属性的类,则可以使用jvcl中的TApplicationStorage/TFormStorage组件,Delphi DFM流系统和各种Internet站点作为示例.