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

前端之家收集整理的这篇文章主要介绍了在Delphi中循环遍历不规则枚举前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1)有没有人知道是否可以在Delphi(XE)中循环不规则枚举?

循环正常的枚举是可以的.从Delphi Basics开始:

  1. var
  2. suit : (Hearts,Clubs,Diamonds,Spades);
  3. begin
  4. // Loop 3 times
  5. For suit := Hearts to Diamonds do
  6. ShowMessage('Suit = '+IntToStr(Ord(suit)));
  7. end;

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

  1. var
  2. 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的方法
  1. type
  2. TSuit = (Hearts = 1,Diamonds = 10,Spades);
  3.  
  4. const
  5. Suits: array[0..3] of TSuit = (Hearts,Spades);

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

猜你在找的Delphi相关文章