Как выполнить итерацию инициализированных перечислимых типов с помощью Delphi 6 и избежать ошибки «выход за границы»?

Я использую Delphi 6 Профессиональный. Я взаимодействую с библиотекой DLL, которая объявляет перечисляемый тип следующим образом:

TExtDllEnum = (ENUM1 = $0, ENUM2 = $1, ENUM3 = $2, ENUM4 = $4, ENUM5 = $8, ENUM6 = $10);

Как видите, инициализированные значения не являются смежными. Если я попытаюсь повторить тип с помощью цикла for следующим образом:

var
    e: TExtDllEnum;
begin
    for e := Low(TExtToDllEnum) to High(TExtToDllEnum) do
    ... // More code
end;

Delphi по-прежнему увеличивает e на 1 при каждом вызове цикла и тем самым создает числовые значения для e, которые не являются членами перечисляемого типа (например, '3'), и приводит к ошибке «вне пределов». Как я могу выполнить итерацию перечислимого типа в цикле for, который генерирует только допустимые значения для перечисляемого типа?

Спасибо.

7
задан Robert Oschler 28 September 2010 в 22:44
поделиться