1

私は別の言語に書き直すプロジェクトを持っています、そしてそれをするために-私はそれを構築したいと思います。しかし、ビルドしようとすると、「E1012:定数式がサブレンジの境界に違反しています」というメッセージが表示されます。

私はそのようなコードを持っています:

var ForTolkResult : array[0..2000] of char;

    ForTolkResult[sizeof(ForTolkResult)-1] := chr(0); // Occurs here

私の観点からすると、ここではすべてが正しいsizeof(ForTolkResult) = 2000 * 1のでsizeof(ForTolkResult) - 1 = 1999、配列の範囲内にあります。(しかし、私はPascalを初めて使用します)では、ここで何が問題になっていますか?

Embarcadero C++Builderを介してビルドしようとしています。このエラーがコンパイラのバグである場合、このチェックをオフにするにはどうすればよいですか?

4

1 に答える 1

1

charは本当に1バイトのメモリを占有しますか?つまり、それが「Ansi」シングルバイト文字であり、WideCharではないかどうかを確認します。

とにかく、配列の最後のインデックスにアクセスする必要がある場合は、

ForTolkResult[High(ForTolkResult)] := chr(0);
于 2012-12-21T12:36:53.060 に答える