Pascal 常量表达式违反子范围界限
我有一个项目,我要重写成另一种语言,为了做到这一点,我想建立它。但当我尝试构建它时,我收到“E1012:常量表达式违反子范围边界” 我有这样的代码:Pascal 常量表达式违反子范围界限,pascal,Pascal,我有一个项目,我要重写成另一种语言,为了做到这一点,我想建立它。但当我尝试构建它时,我收到“E1012:常量表达式违反子范围边界” 我有这样的代码: var ForTolkResult : array[0..2000] of char; ForTolkResult[sizeof(ForTolkResult)-1] := chr(0); // Occurs here 在我看来,这里的一切都是正确的,sizeof(ForTolkResult)=2000*1,因此sizeof(ForTol
var ForTolkResult : array[0..2000] of char;
ForTolkResult[sizeof(ForTolkResult)-1] := chr(0); // Occurs here
在我看来,这里的一切都是正确的,sizeof(ForTolkResult)=2000*1
,因此sizeof(ForTolkResult)-1=1999
,这是数组的边界。(但我对帕斯卡还不熟悉)那么这里怎么了
我试图通过NavaCabo C++ C++ Builder构建它。如果此错误是编译器中的错误,如何关闭此检查?char是否真的占用了一个字节的内存?我的意思是,检查它是否是“Ansi”单字节字符而不是WideChar 无论如何,当您需要访问数组的最后一个索引时,最好使用
ForTolkResult[High(ForTolkResult)] := chr(0);
char真的占用一个字节的内存吗?我的意思是,检查它是否是“Ansi”单字节字符而不是WideChar 无论如何,当您需要访问数组的最后一个索引时,最好使用
ForTolkResult[High(ForTolkResult)] := chr(0);
var-ForTolkResult:char的数组[0..2000]代码>顺便说一句,这个数组有2001个elementsOk,如果包含2000个元素,仍然应用相同的逻辑。sizeof(F)-1=2000,位于char的数组var ForTolkResult:array[0..2000]的边界内代码>顺便说一句,这个数组有2001个elementsOk,如果包含2000个元素,仍然应用相同的逻辑。sizeof(F)-1=2000,在数组的范围内。我在Pascal中不太方便,但我唯一需要的是能够运行它。将sizeof更改为High有帮助,所以谢谢!它仍然无法构建,因此我将尝试向开发它的开发人员介绍。谢谢我用Pascal不太方便,但我唯一需要的是能够运行它。将sizeof更改为High有帮助,所以谢谢!它仍然无法构建,因此我将尝试向开发它的开发人员介绍。谢谢