線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1338
推到 Plurk!
推到 Facebook!

讀取DBGrid的資料時會發生Access violation

答題得分者是:andychang1690
abdias
一般會員


發表:5
回覆:4
積分:1
註冊:2004-07-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-02 01:26:38 IP:140.127.xxx.xxx 未訂閱
小弟利用TTable來讀取db檔 再DBGrid內的資料全部讀取陣裡 程式碼如下      int i,j;   Table1->First();   DBGrid1->Visible = false;   TBookmark bk;   bk = Table1->GetBookmark();      //我開啟二維動態陣列來存值   dbArray = new double*[StrToInt(Edit1->Text)-1];     for (i=0;iText)-1;i ) { dbArray[i]=new double[Table1->RecordCount-1]; } for (i=0;iRecordCount-1;i ) { j=0; dbArray[j][i] = Table1->Fields[0].Fields[0]->AsString.ToDouble(); //這裡理論上要設成 j < StrToInt(Edit1->Text)才會抓到一列裡全部的資料 //可是如果設成這樣,就會發生Access violation的錯誤 //有時會發生在第一列讀完,有時發生在第二列 //如果設成 j < StrToInt(Edit1->Text)-1就不會出錯了 //可是這樣一來資料就會少一筆 //有人知道為什麼嗎 for (j = 1;j < StrToInt(Edit1->Text);j ) { dbArray[j][i]= Table1->Fields[0].Fields[j]->AsString.ToDouble(); } Table1->Next(); } DBGrid1->Visible = true; Table1->GotoBookmark(bk); Table1->FreeBookmark(bk); 發表人 - ABDIAS 於 2005/07/02 01:32:14
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-03 03:19:11 IP:221.169.xxx.xxx 未訂閱
引言:
小弟利用TTable來讀取db檔
再DBGrid內的資料全部讀取陣裡
程式碼如下      int i,j;
  Table1->First();
  DBGrid1->Visible = false;
  TBookmark bk;
  bk = Table1->GetBookmark();      //我開啟二維動態陣列來存值
  dbArray = new double*[StrToInt(Edit1->Text)-1]; 
  // 我不知道你的Edit1->Text是什麼?但看起來
應該是dbArray = new double*[StrToInt(Edit1->Text)]; 
你矩陣多減一個一?因為與你下面
//如果設成 j < StrToInt(Edit1->Text)-1就不會出錯了
成立!因為你的舉陣就是StrToInt(Edit1->Text)-1這麼大!
  
  for (i=0;iText)-1;i  )
    {
      dbArray[i]=new double[Table1->RecordCount-1];
    }      for (i=0;iRecordCount-1;i  )
    {
       j=0;
       dbArray[j][i] = Table1->Fields[0].Fields[0]->AsString.ToDouble();
       
       //這裡理論上要設成 j < StrToInt(Edit1->Text)才會抓到一列裡全部的資料
       //可是如果設成這樣,就會發生Access violation的錯誤
       //有時會發生在第一列讀完,有時發生在第二列
       //如果設成 j < StrToInt(Edit1->Text)-1就不會出錯了
       //可是這樣一來資料就會少一筆
       //有人知道為什麼嗎
       for (j = 1;j < StrToInt(Edit1->Text);j  )
         {
           dbArray[j][i]= Table1->Fields[0].Fields[j]->AsString.ToDouble();
         }
       Table1->Next();
    }
  DBGrid1->Visible = true;      Table1->GotoBookmark(bk);
  Table1->FreeBookmark(bk);    請參考!    發表人 - ABDIAS 於 2005/07/02  01:32:14
Andy Chang
------
Andy Chang
abdias
一般會員


發表:5
回覆:4
積分:1
註冊:2004-07-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-03 12:05:32 IP:140.127.xxx.xxx 未訂閱
解決了~~~ 原來是我陣列少開一個~~~ 所以才發生錯鋘~~~
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-03 12:44:36 IP:59.104.xxx.xxx 未訂閱
引言: 解決了~~~ 原來是我陣列少開一個~~~ 所以才發生錯鋘~~~
插花一下,請將問題結案吧!鼓勵回答的大大!
系統時間:2024-04-25 16:43:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!