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。到目前为止,我找到的唯一解决方案是将枚举转换为集合,并使用“for ... in”循环,如 delphi.about.com 上的那样。 .
因此,如果问题 1) 的答案是否定的,那么:
2)Delphi中如何将枚举转换为集合?
我使用它的上下文是编辑框(TEdit)的组件数组,其编号不规则(edit1、edit5、edit7、edit3,...)。虽然可以对所有编辑框重新排序,但它消除了使用枚举作为允许在枚举中间添加编辑框的灵活方式的原因。
最佳答案
我现在手头没有 Delphi 编译器,但我认为 gabr 的方法可以通过这样做得到相当显着的改进
type
TSuit = (Hearts = 1, Clubs, Diamonds = 10, Spades);
const
Suits: array[0..3] of TSuit = (Hearts, Clubs, Diamonds, Spades);
谁知道呢,也许它甚至无法编译。
关于delphi - Delphi中的不规则枚举循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4132717/