我在一些 Delphi 代码中遇到了一些相当不寻常的行为。使用in
关键字检查项目是否在常量数组中时,出现以下编译错误:
E1012 常量表达式违反子范围界限
常量定义如下:
type TSomeEnum = (seFoo = 1000,
seBar = 2000,
seBoo = 3000,
seFar = 4000,
seFooBar = 5000,
seBooFar = 6000,
seLow = 1000,
seHigh = 6000,
seCount = 6);
失败的行如下:
if someObj.someProperty in [seFoo, seFar, seFooBar] then
...
虽然我理解此处发布的另一个问题中显示的错误背后的原因,其中使用变量时未在编译时对整数数组进行边界检查,但我遇到与常量数组相同的问题似乎很奇怪肯定在范围内。
or
现在,我已经用包含子句的(更大的)语句替换了该行。然而,这显然并不理想。谁能解释我为什么会遇到这个问题?