Как исключить первый элемент перечисляемого типа, используемый в качестве индекса массива в delphi?

Я хочу исключить первое значение этого перечисляемого типа

type
  TEnum = (val0, val1, val2, val3, val4);

чтобы сделать этот массив

TBValues: array [low(TEnum)..High(TEnum)] of boolean;

содержит только последние значения n-1 (в этом случае n = 5).

Я пробовал это:

TBValues: array [low(TEnum)+1..High(TEnum)] of boolean; 

но я думаю, что арифметические операции в этом случае недопустимы, потому что я получаю эту ошибку компилятора

E2010 Несовместимые типы: 'Int64' и 'TEnum'

Как это сделать?

Ответ 1

Как насчет очевидного:

TBValues: array [val1..val4] of boolean;

Если вы хотите избежать фактических имен перечислений, вы можете записать его следующим образом:

TBValues: array [Succ(low(TEnum))..High(TEnum)] of boolean;

Для получения дополнительной информации: