2012-12-21 67 views
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,這是一個數組的邊界。 (但我是帕斯卡新手)所以這裏有什麼問題?

我試圖通過Embarcadero C++ Builder來構建它。如果這個錯誤是編譯器中的錯誤,我該如何關閉此檢查?

+0

'VAR ForTolkResult:數組[0..2000]焦炭;' 通過這個數組的方式有2001元素 –

+0

好吧,如果包含2000 - 仍然適用相同的邏輯。 sizeof(F) - 1 = 2000這是在數組的邊界 – Archeg

回答

1

char是否真的存在一個字節的內存?我的意思是,檢查它是否是「Ansi」單字節字符而不是WideChar。

無論如何,當你需要訪問一個數組的最後一個索引,你最好使用

ForTolkResult[High(ForTolkResult)] := chr(0); 
+0

我在帕斯卡不太方便,但我唯一需要的是能夠運行它。將sizeof更改爲High幫助,謝謝!它仍然沒有建立,所以我會盡力解決開發人員的問題。謝謝! – Archeg