陣列的使用超出了宣告的範圍 |
尚未結案
|
wena
一般會員 發表:26 回覆:37 積分:12 註冊:2005-07-20 發送簡訊給我 |
引言: ThrowIfOutOfRange(idx); // Should Range-checking be optional to avoid overhead ?? Source: INCLUDE\VCL\dstring.h milkbear 你好: 應該是你 array 的 index 超出你所宣告的範圍了 例如: int a[5]; // 總共有 0, 1, 2, 3, 4 共 5 個 index 假如你在程式碼中寫 a[6] 就超過了這是我在某討論串裡找到的一段話,因為我也遇到相同的錯誤訊息 我的程式碼: void __fastcall TForm1::BitBtn1Click(TObject *Sender) { int i; AnsiString temp = RichEdit1->Text; for(i=1 ; i當我RUN的時候出現了一個warning: [C++ Warning] Unit1.cpp(24): W8060 Possibly incorrect assignment 當我執行程式時出現出現了一個警告視窗如下: 隨後就出現了一個dstring.h的檔案並且將某一行反白如同引言出現的一樣: 我猜想我也是程式超出了宣告的範圍 但我看不出來 謝謝幫忙! |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
wena
一般會員 發表:26 回覆:37 積分:12 註冊:2005-07-20 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
wena
一般會員 發表:26 回覆:37 積分:12 註冊:2005-07-20 發送簡訊給我 |
謝謝!
程式竟然順利執行了!
可是還是很納悶…
for(int i=RichEdit1->Text.Length(); i>1; i--) { if(temp[i] ==' ' && temp[i-1] == ' ') temp.Delete(i,1); }和 for(i=1 ; i有什麼不同嗎?是否Length()在搞怪? |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
wena
一般會員 發表:26 回覆:37 積分:12 註冊:2005-07-20 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
這是觀念問題, 當 Delete 刪除後字串長度會變短.
所以一開始假設 temp 內的字串長度為 10 所以你的 for ㄧ定會跑十次
而你的方式是由字串的開頭處理, 如果沒有可刪除的項目就不會出錯.
ㄧ但有刪除, 那字串就會小於 10 , 所以當存取 temp[10] 時一定就是超出範圍. 而由字串尾端開始處理就不會有這樣的問題. 因為當你刪除 temp[10] 後
下ㄧ個檢查的會是 temp[9] , 這樣瞭解嗎. 雪龍
http://bestlong.no-ip.com/
學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
wena
一般會員 發表:26 回覆:37 積分:12 註冊:2005-07-20 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
重點是 for 迴圈開始就確定會讓 i 由 1 to 10
所以一定會存取 temp[1] ~ temp[10]
但是在迴圈範圍中的程式會去改變 temp 的大小.
所以由開頭處理會產生問題. 雪龍
http://bestlong.no-ip.com/
學海無涯覺無盡,勤做筆記防失憶
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
wena
一般會員 發表:26 回覆:37 積分:12 註冊:2005-07-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |