5

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

4

2 回答 2

2

如果我理解正确,您想通过 RTTI 遍历这些属性,而不需要对属性及其索引值一无所知。因为有效的索引值不能是整数值序列,所以这是不可能的。可能存在带有字符串索引或对象引用作为索引值的属性。RTTI 中没有任何机制可以查询可用于迭代的有效索引值。

于 2011-10-31T10:53:22.617 回答
1

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

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

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

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

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

最后,可以使用类助手(如果基础类型是记录,则使用记录助手)将TPageControl 与 GetEnumertor 一起“改造” 。

于 2011-10-31T15:06:49.260 回答