少しの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
句で構成される(はるかに大きな)ステートメントに置き換えました。ただし、これは明らかに理想的ではありません。なぜ私がこの問題を抱えているのか、誰かが何か光を当てることができますか?