通过Delphi 2010中的索引属性进行迭代

Raf*_*olo 5 delphi indexed properties rtti

在Delphi 2010中有没有办法迭代任何类型的索引属性(例如,页面的TPageControl)?

Jer*_*ers 1

不,这是不可能的,因为没有标准模式:

  • 指定索引类型
  • 指定要使用的索引的开始值和结束值

这就是某些类具有枚举器的原因:它是告诉 for ... in 语句如何枚举它的模式。

然而,您可以做的是最好的估计:

  • 大多数时候索引是整数
  • 大多数时候索引从零开始
  • 大多数情况下,有一个属性 Count 或 Length 告诉您如何获取最终值

最后,可以使用类帮助程序(如果基础类型是记录,则使用记录帮助程序)通过 GetEnumertor 来“改造”TPageControl 。