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

幫幫忙 看看哪錯了

尚未結案
joen0000
一般會員


發表:47
回覆:47
積分:18
註冊:2004-11-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-13 00:52:14 IP:61.230.xxx.xxx 未訂閱
 template 
class Array{
int m_sz;
T *m_pData;
public:
    //copy constructor:由於 m_pData是new出來的,
    //default copy constructor 不能使用,所以得要自製
    Array(const Array& src):Array(){*this= src;}        //建構子: n 是陣列的大小,d 是陣列內容的起始值
    //要模擬成二維,d 參數的引入是重要關鍵(詳見二維應用範例)
    Array(int n=0, T d= T()){
        m_sz=n;
        //注意二維以上時,T 可能會是Array 類別,new T[m_sz]會喚起
        //Array()預設建構子。而預設建構子是由本建構式來提供
        if (m_sz) m_pData= new T[m_sz];
        else m_pData=NULL;
        for (int i=0;i& operator =()
    }        //解構子,就不用說明了吧!
    ~Array(){if (m_pData)  delete [] m_pData;}        //二維以上模擬時會用到
    Array& operator =(const Array& src){
        if (m_pData){
            delete [] m_pData;
            m_pData=NULL;
        }
        m_sz= src.m_sz;
        if (m_sz){
            m_pData= new T[m_sz];
            //三維以上時 T 可能為 Array型態,new T[m_sz]會喚起 Array()
            for (int i=0; iLoadFromFile(Edit1->Text);
 Memo1->Text=str->Text;
 h= StrToInt(str->Count)+1;
 n= sqrt(h);
 Array > Array2D(n,Array(n));//相當於 int Array2D[n][n]
    for (i=0; iStrings[k]);
           k++;
                              }
                      }    }
 
我看不出來哪有錯 請大大幫忙
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-13 08:15:31 IP:211.76.xxx.xxx 未訂閱
把運算的statement寫在for裡面不是個好習慣,容易使compiler出錯,而且別人看code也很不方便。
joen0000
一般會員


發表:47
回覆:47
積分:18
註冊:2004-11-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-13 11:36:44 IP:61.230.xxx.xxx 未訂閱
引言: 把運算的statement寫在for裡面不是個好習慣,容易使compiler出錯,而且別人看code也很不方便。
嗯嗯 我把他改了 還是不知哪錯了 請大大幫個忙
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-13 22:20:50 IP:211.76.xxx.xxx 未訂閱
joen你好: 改了以後第一個問題解決了嗎? 你把一開始的問題直接改修成接下來的第二個問題,這樣以後的人根本不知道我回的第一個問題是什麼...也無法看到我所提的「把statement寫在for中」是什麼樣子。第一個問題是有關Memory leakage,第二個問題是有關String的...,現在已經看不出來,可惜了這個討論文章。 建議以後可以分兩次發問,以利後來的人用站上的系統找相關文章。 回到你的問題,"0 4 11"要先parse後才能丟給StrToInt,而且用StrToInt前最好還是有先用TryStrToInt試試合不合法。Message也很明白的說"0 4 11"不是一個合法的整數值,不知道你有沒有先試著解決問題? 發表人 - pwipwi 於 2005/03/13 22:23:37
joen0000
一般會員


發表:47
回覆:47
積分:18
註冊:2004-11-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-14 14:21:41 IP:61.230.xxx.xxx 未訂閱
pwipwi大大你好: 嗯嗯我以後會注意ㄉ.經大大ㄉ解釋我明白那ㄍㄉ意思了 所以我多加了紅色ㄉ程式碼Str->CommaText=Str->Text;這ㄍ錯誤就不見了 但又有新ㄉ錯誤在藍色程式碼那一排電腦指示ㄉ..但我不清楚哪錯了
void __fastcall TForm1::Button1Click(TObject *Sender)
{     int n,i,h;
 int k=0;
 TStringList *str =new TStringList();
 str->LoadFromFile(Edit1->Text);
 Memo1->Text=str->Text;
  Str->CommaText=Str->Text ;
 h= StrToInt(str->Count)+1;
 n= sqrt(h);
 Array > Array2D(n,Array(n));//相當於 int Array2D[n][n]
    for (i=0; iStrings[k]);
           k++;
                              }
                      }    }
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-15 00:26:20 IP:211.76.xxx.xxx 未訂閱
joen0000你好:     你可以試試自已trace code看看,F5可以下中斷點、F7 F8是一步一步執行 watch可以看變數內容~。而且資料量很少,不難的~麻煩你自已試試看囉 我幾乎每天都在做這些事。雖然由我直接幫你很快,但是對我、對你來說都沒益處..你自已試過以後會學很多的~
joen0000
一般會員


發表:47
回覆:47
積分:18
註冊:2004-11-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-17 14:45:34 IP:61.230.xxx.xxx 未訂閱
pwipwi大大你好: 按ㄌf7然後跳到這裡ㄉ畫面 這是什ㄇ意似ㄋ 藍色指ㄉ部分 我完全沒有感覺哪裡出錯了 都看不出來 太失敗ㄌ我 pwipwi大大請多點提示 發表人 - joen0000 於 2005/03/17 15:03:11 發表人 - joen0000 於 2005/03/17 16:25:21
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-17 20:32:10 IP:211.76.xxx.xxx 未訂閱
藍色的部份只是代表現在執行到的地方。 要Trace進入函式,按F7。 如果不Trace函式的細節,按F8就會一次完成function call。
joen0000
一般會員


發表:47
回覆:47
積分:18
註冊:2004-11-07

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-03-19 02:18:39 IP:211.76.xxx.xxx 未訂閱
pwipwi大大: 能跟我說我哪錯ㄌ好嗎? 煩ㄌ好久ㄌ.. 先謝謝pwipwi大大ㄌ
ubong
一般會員


發表:2
回覆:42
積分:23
註冊:2002-10-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-03-20 16:18:38 IP:218.163.xxx.xxx 未訂閱
0411 is not a valid integer value 是因為04用的全型中文字 Str->CommaText=Str->Text ; 此一指令是轉換全型字為一般數字?我試著用 Label1->Caption=Edit1->Text->CommaText; //不通 我看Help說明並無將全型字變為半型之作用,我想你的問題應該是因為你的資 料是全型字的關係吧, ubong
------
ubong
joen0000
一般會員


發表:47
回覆:47
積分:18
註冊:2004-11-07

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-03-21 13:33:07 IP:61.230.xxx.xxx 未訂閱
那我要怎ㄇ做 才能執行成功ㄋ??
ldd
一般會員


發表:12
回覆:62
積分:19
註冊:2004-07-06

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-03-21 14:04:05 IP:59.120.xxx.xxx 未訂閱
hi joen0000 出現那個訊息通常是存取到 不該存去的位址!!! 我沒有用你的class去試 只是簡單的測試迴圈是否正常顯示 StrToInt(str->Strings[k]); 這邊用迴圈測試出來正常 我覺得你可能要去確定一下 你產生的Array是否正確!!!
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-03-22 04:11:03 IP:211.76.xxx.xxx 未訂閱
不好意思現在才回覆,最近比較忙一些.. 我把你的碼debug後,問題主要是出在Array身上 主要是constructor無法正確的產生第二維的陣列: T d= T() 會只產生一個空的陣列。
joen0000
一般會員


發表:47
回覆:47
積分:18
註冊:2004-11-07

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-03-22 18:45:59 IP:61.230.xxx.xxx 未訂閱
pwipwi大大: 沒關係辣~~有回我就粉高興了 這ㄍ產生動態陣列的classㄚ是我從網路抓ㄉ http://ehome.hifly.to/showthread.php?s=e9e16f98b6f0d5f657e49ec0228ca446&threadid=357 我直接抓下來用... 我不知道怎ㄇ改成正確..請大大幫幫忙
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-03-22 19:36:40 IP:211.76.xxx.xxx 未訂閱
看來那個函式庫是有不少問題的。 在bcb直接可以用vector就能方便又快速的達到你要的功能 站上已有相關的討論文章: http://delphi.ktop.com.tw/topic.php?topic_id=58882
joen0000
一般會員


發表:47
回覆:47
積分:18
註冊:2004-11-07

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-03-22 21:51:22 IP:61.230.xxx.xxx 未訂閱
引言: 看來那個函式庫是有不少問題的。 在bcb直接可以用vector就能方便又快速的達到你要的功能 站上已有相關的討論文章: http://delphi.ktop.com.tw/topic.php?topic_id=58882
哇~~~bcb世界真大~~~ 謝謝大大ㄌ
系統時間:2024-05-19 13:42:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!