極大AnsiString 抓值的問題 |
尚未結案
|
雞排
一般會員 發表:16 回覆:40 積分:11 註冊:2004-03-10 發送簡訊給我 |
我建了一個很大的AnsiString passable;
一直簡化程式碼抓bug 後來才發現是passable[i]=='0' 出的問題
只要i大於六位數就會掛掉 array不行 string也不行 那到底該怎樣處理大型的資料? 我再建資料的時後都沒問題 為什麼要抓值出來用就不行?
do{ i=random(ncount); }while(passable[i]=='0'); Form1->Memo2->Lines->Add(Form1->Memo1->Lines->Strings[i]); 下面是dstring.h 錯誤的時候停的地方 是指string爆掉嗎? char& __fastcall operator [](const int idx) { ThrowIfOutOfRange(idx); // Should Range-checking be optional to avoid overhead ?? Unique(); // Ensure we're not ref-counted return Data[idx-1]; }一個不該是程式新手的新手 /. 發表人 - 雞排 於 2004/05/19 05:17:52 發表人 - 雞排 於 2004/05/19 17:29:01 |
bass15
高階會員 發表:24 回覆:171 積分:119 註冊:2003-10-27 發送簡訊給我 |
OutOfRange表示你超出了他的index囉..
例如:
AnsiString s1="123";
char a2=s1[4]; <---------這裡就會OutOfRange 因為s1只包函三個字元,index是1~3 所以檢查一下你i=random(ncount); 出來的值是不是超出了passable.Length(),
或是你的i取到0 發表人 - bass15 於 2004/05/19 10:57:36 發表人 - bass15 於 2004/05/19 10:59:13
|
雞排
一般會員 發表:16 回覆:40 積分:11 註冊:2004-03-10 發送簡訊給我 |
引言: OutOfRange表示你超出了他的index囉.. 例如: AnsiString s1="123"; char a2=s1[4]; <---------這裡就會OutOfRange 因為s1只包函三個字元,index是1~3 所以檢查一下你i=random(ncount); 出來的值是不是超出了passable.Length(), 或是你的i取到0 發表人 - bass15 於 2004/05/19 10:57:36 發表人 - bass15 於 2004/05/19 10:59:13 ncount=Form1->Memo1->Lines->Count; passable也是依照ncount建造的 do{ i=random(ncount); //i產生0~(ncount-1) }while(passable[i 1]=='0'); //所以 i 1 Form1->Memo2->Lines->Add(Form1->Memo1->Lines->Strings[i 1]);改成這樣後還是一樣會出錯 最只要是i太大 超過六位數會掛掉 真的只是因為超出索引值嗎? 我把do while拿掉 直接給予小於ncount的i值 還是會掛掉耶 @_@ 一個不該是程式新手的新手 /.\ |
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
|
雞排
一般會員 發表:16 回覆:40 積分:11 註冊:2004-03-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |