全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:844
推到 Plurk!
推到 Facebook!

極大AnsiString 抓值的問題

尚未結案
雞排
一般會員


發表:16
回覆:40
積分:11
註冊:2004-03-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-19 01:17:34 IP:210.68.xxx.xxx 未訂閱
我建了一個很大的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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-19 10:56:11 IP:61.66.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-19 16:30:40 IP:210.68.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-19 23:16:36 IP:211.76.xxx.xxx 未訂閱
可能需要請你放上比較完整的程式碼囉
雞排
一般會員


發表:16
回覆:40
積分:11
註冊:2004-03-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-20 10:43:45 IP:210.68.xxx.xxx 未訂閱
引言: 可能需要請你放上比較完整的程式碼囉
解決了 ^^ 是其他的全域變數值沒設好 導致影響到記憶體位置 真是猜不透阿 以後不只要看錯誤地方的前後幾行了... 一個不該是程式新手的新手 /.\
系統時間:2024-05-18 12:42:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!