Цикл через нерегулярное перечисление в Delphi

1) Кто-нибудь знает, можно ли перебрать неправильное перечисление в Delphi (XE)?

Зацикливание на обычном перечислении - это хорошо. Из Основы Delphi :

var
  suit : (Hearts, Clubs, Diamonds, Spades);
begin
// Loop 3 times
For suit := Hearts to Diamonds do
   ShowMessage('Suit = '+IntToStr(Ord(suit)));
end;

Но, если 'костюм' вместо этого объявлен как

var
  suit : (Hearts=1, Clubs, Diamonds=10, Spades);

, он повторяется 10 раз. Не удивительно, но я хотел бы зациклить 3. Единственное решение, которое я нашел до сих пор, - это преобразование перечисления в набор и использование цикла for ... in, как в delphi.about. 2) Как преобразовать из перечисления в набор в Delphi?

Контекст, в котором я его использую, - это компонентный массив полей редактирования (TEdit) с нерегулярной нумерацией (edit1, edit5, edit7, edit3, ... ). Хотя можно изменить порядок всех полей редактирования, это устраняет причину использования перечисления как гибкого способа добавления поля редактирования в середине перечисления.

7
задан Truls 9 November 2010 в 12:26
поделиться