通过引用访问记录字段

3

我需要在Lazarus中使用记录(由于TVirtualStringTree的原因)。

如果我有一个简单的记录:

type
  myrec = record
    name: string;
  end;

有没有办法通过引用访问字段?即创建一个函数:

getField('name', searchRecord);

或者有一种方法可以迭代字段名称吗?

那么,您是否正在寻找一种编写函数的方法,该函数将在虚拟树视图中搜索后返回与“name”字段值匹配的记录? - TLama
我想要访问记录中的任何字段 - 因此函数应该返回一个字段,我将其作为参数传递给该函数。实际上,记录将保存大量的数据(成百上千个字段)- 我不想每次都手动输入它们。最好的方法是有一种列出字段名称、迭代字段并读取特定字段名称的方法。 - hugo
啊,我明白了。你正在寻找一种RTTI方式来通过名称访问记录字段值。我不确定,但我认为FPC不支持如此深的RTTI,但让我们希望我是错的... - TLama
没错!感谢您解答我的问题,我之前不知道 RTTI。 - hugo
3
在FPC / trunk上,扩展RTTI的工作已经完成,但他们选择扩展单元typinfo而不是构建新的单元层次结构。请注意,在需要时有选择地启用所有形式的扩展RTTI非常重要,因为它会使二进制文件巨大化(并且由RTTI可访问的符号可能会抑制某些优化)。总的来说,我认为,除了流媒体相关的目的外,对其的需求通常是糟糕设计的指标。 - Marco van de Voort
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接