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

將資料從ListView匯出來時所發生的問題...

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


發表:10
回覆:6
積分:3
註冊:2004-08-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-30 16:14:44 IP:210.202.xxx.xxx 未訂閱
我程式中的ListView樣式為vsReport 專門用於動態顯示各種資料的: Name | Length | Content | SectorNum. ←(此為Column) name1| length1| content1| num1 name2| length2| content2| num2 . . nameN| lengthN| contentN| numN    共N組資料 我將這些資料匯出成.txt格式 然後轉存到硬碟中    我的程式碼如下: void __fastcall TMainForm::btnSaveClick(TObject *Sender) { TStringList *s=new TStringList; s->Add("Name BP Length Type Content SectorNum"); for(int i=0;iItems->Count;i ) { AnsiString str=""; str=sListView->Items->Item[i]->Caption " "; for (int j=0;jColumns->Count-1;j ) { str =sListView->Items->Item[i]->SubItems->Strings[j] " "; } s->Add(str "\n"); } if (SaveDialog1->Execute()) { s->SaveToFile(SaveDialog1->FileName); delete s; } } 但是因為某筆資料非常大 所以執行時產生:EStringError with "List Index out of bound(0)"的錯誤訊息 我要如何改比較好呢?
andychang1690
資深會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-30 16:36:37 IP:202.104.xxx.xxx 未訂閱
Titan_Lin:
我測試是OK的,Post上我程式請參考
void __fastcall TMainForm::btnSaveClick(TObject *Sender)
{
  TStringList *s=new TStringList;
  int icount = sListView->Items->Count;
  int ccount = sListView->Columns->Count;
  s->Add("Name BP Length Type Content SectorNum");
  for(int i=0;i < icount;i  ) {
    AnsiString str="";
    str=sListView->Items->Item[i]->Caption " ";        for (int j=0;j < ccount-1;j  ) {
      str =sListView->Items->Item[i]->SubItems->Strings[j] " ";
    }
    s->Add(str);
  }
  if (SaveDialog1->Execute()) {
    s->SaveToFile("123.txt");
  }
  delete s;
}    
Andy Chang
------
Andy Chang
Titan_Lin
一般會員


發表:10
回覆:6
積分:3
註冊:2004-08-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-30 16:49:53 IP:61.218.xxx.xxx 未訂閱
我匯出其他資料的時候 也是OK 但是有某一組其資料量大的很誇張 約 5*2048*4 bytes的文字 然後按下去就會出錯..
andychang1690
資深會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-30 17:46:19 IP:202.104.xxx.xxx 未訂閱
Titan_Lin:天阿!我懷疑你的ListView能否顯示出來,
我建議試試另一種方式。
#include "stdio.h"
void __fastcall TMainForm::btnSaveClick(TObject *Sender)
{
  FILE *file1;
  if (SaveDialog1->Execute()) {
    file1=fopenSaveDialog1->FileName.c_str(),"w");
  }
  int icount = sListView->Items->Count;
  int ccount = sListView->Columns->Count;
  fprintf(file1,"%s\n","Name BP Length Type Content SectorNum");
  for(int i=0;i < icount;i  ) {
    AnsiString str="";
    str=sListView->Items->Item[i]->Caption " ";        for (int j=0;j < ccount-1;j  ) {
      str =sListView->Items->Item[i]->SubItems->Strings[j];
    }
    fprintf(file1,"%s\n",str);
  }
  if (fclose(file1) != 0)
    fclose(file1);
  delete file1;
}
Andy Chang 發表人 - andychang1690 於 2004/08/30 17:48:57
------
Andy Chang
Titan_Lin
一般會員


發表:10
回覆:6
積分:3
註冊:2004-08-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-30 20:29:01 IP:210.202.xxx.xxx 未訂閱
我知道原因了 原因是因為我有些SubItem沒有設定值 所以才會出錯....
系統時間:2024-05-13 2:55:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!