Я столкнулся с некоторым довольно необычным поведением в части кода 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
. Однако это явно не идеально. Может ли кто-нибудь пролить свет на то, почему я получаю эту проблему?