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,Diamonds=10,Spades);
它循环10次.并不令人惊讶,但我想循环3.我到目前为止找到的唯一解决方案是将枚举转换为集合,并使用像delphi.about.com那样的’for … in’-loop.
那么,如果问题1)的回答是否定的,那么:
2)如何从枚举转换为Delphi中的set?
我使用它的上下文是一个编辑框(TEdit)的组件数组,它有一个不规则的编号(edit1,edit5,edit7,edit3,…).虽然可以对所有编辑框进行重新排序,但它删除了使用枚举作为允许在枚举中添加编辑框的灵活方式的原因.
解决方法
我现在手头没有Delphi编译器,但我认为通过这样做可以显着提高gabr的方法
type TSuit = (Hearts = 1,Diamonds = 10,Spades); const Suits: array[0..3] of TSuit = (Hearts,Spades);
谁知道,也许它甚至没有编译.