1)有人知道在Delphi(XE)中是否可以循环遍历不规则枚举吗?
遍历正常枚举是可以的。来自Delphi Basics:
var
suit : (Hearts, Clubs, Diamonds, Spades);
begin
// Loop 3 times
For suit := Hearts to Diamonds do
ShowMessage('Suit = '+IntToStr(Ord(suit)));
end;
但是,如果将“suit”声明为
var
suit : (Hearts=1, Clubs, Diamonds=10, Spades);
它循环10次。这并不令人惊讶,但我想循环3次。到目前为止,我找到的唯一解决方案是将枚举转换为集合,并像delphi.about.com上那样使用“for ... in”循环。
因此,如果问题1)的答案是否定的,则:
2)如何在Delphi中从枚举转换为集合?
我在一个编辑框(TEdit)组件数组中使用它,该数组具有不规则编号(edit1、edit5、edit7、edit3等)。虽然可以重新排序所有编辑框,但这会删除使用枚举作为灵活方式允许在枚举中间添加编辑框的原因。
TList
的后代并迭代它们? - Ignacio Vazquez-AbramsTypInfo
单元中获取的普通 RTTI 表现非常糟糕。显然,您无法在不规则枚举上获取TypeInfo()
,我也尝试了使用集合,但结果只给了我访问冲突。 - Jens Mühlenhoff