在Delphi中循环遍历不规则枚举

Tru*_*uls 7 delphi loops enumeration

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;
Run Code Online (Sandbox Code Playgroud)

但是,如果'suit'被声明为

var
  suit : (Hearts=1, Clubs, Diamonds=10, Spades);
Run Code Online (Sandbox Code Playgroud)

它循环10次.并不令人惊讶,但我想循环3.到目前为止,我发现的唯一解决方案是将枚举转换为集合,并使用像delphi.about.com上的'for ... in'-loop .

那么,如果问题1)的答案是否定的,那么:
2)如何从枚举转换为Delphi中的设置?

我使用它的上下文是一个编辑框(TEdit)的组件数组,它有一个不规则的编号(edit1,edit5,edit7,edit3,...).虽然可以对所有编辑框进行重新排序,但它删除了使用枚举作为允许在枚举中添加编辑框的灵活方式的原因.

And*_*and 7

我现在手头没有Delphi编译器,但我认为通过这样做可以显着提高gabr的方法

type
  TSuit = (Hearts = 1, Clubs, Diamonds = 10, Spades);

const
  Suits: array[0..3] of TSuit = (Hearts, Clubs, Diamonds, Spades);
Run Code Online (Sandbox Code Playgroud)

谁知道,也许它甚至没有编译.