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 真的会占用一个字节的内存吗?我的意思是,检查它是否是“Ansi”单字节字符而不是 WideChar。

无论如何,当您需要访问数组的最后一个索引时,您最好使用

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