如何排除delphi中用作数组索引的枚举类型的第一个元素?

如何排除delphi中用作数组索引的枚举类型的第一个元素?,delphi,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

我想排除此枚举类型的第一个值

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”


如何做到这一点?

显而易见的是:

TBValues: array [val1..val4] of boolean;
如果要避免使用实际的枚举名称,可以这样编写:

TBValues: array [Succ(low(TEnum))..High(TEnum)] of boolean;
有关更多信息:


我非常喜欢你的第二个选择。对我来说,所有的要点都是避免使用枚举名称和奇怪的编译器消息<代码>TBValues=布尔值的数组[Ord(低位(十位))…高位(十位)]这还抱怨Int64不兼容。@SertacAkyuz我也有同样的问题,但我找到了解决方案。这是文档中关于Ord(X)的内容:X是一个Delphi序号类型表达式。结果是X的顺序位置;它的类型是最小的标准整数类型,可以保存X类型的所有值。因此出现了错误消息。