當RichEdit 讀取一個很大的文字檔時會好久......... |
尚未結案
|
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
請問大大們
我使用RichEdit1讀取一個65MB大小的檔案時
都好久...但看了其他文字編輯系統都不會
看了論壇上有人推薦使用LoadFromFile
但還是有點慢...
不知是否有其他更快速的方法.......... 程式碼如下 if(OpenDialog1->Execute()==true)
{ RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName); } 丟入 TStringList 更慢 我的天呀....... 發表人 - taishyang 於 2005/04/01 09:11:24
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
|
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
|
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
參考這篇的討論~
問題】有關檔案處理的問題....
http://delphi.ktop.com.tw/topic.php?topic_id=56169
|
ys168
初階會員 發表:3 回覆:24 積分:25 註冊:2005-10-14 發送簡訊給我 |
試試看如下的程式是否快一點?
//--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; TFileStream *f; AnsiString sFileName="d:\\BCB.bak"; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormShow(TObject *Sender) { ::DeleteFile(sFileName.c_str()); // 先刪除檔案 RenameFile("d:\\BCB.txt","d:\\BCB.bak"); PChar szData; // 建立檔案物件指標,並且開啟成可讀的型態 f = new TFileStream( sFileName , fmOpenReadWrite); // 取得儲存檔案內容的記憶體大小 szData = (PChar)malloc( f->Size 1 ); // 將檔案內容讀至記憶體中 f->ReadBuffer( szData , f->Size ); // 將字串尾端設為『0』 szData[ f->Size ] = '\0'; // 清除『Memo』元件上的內容 Memo1->Clear(); // 將記憶體內容指定給 Memo 元件,也就是將檔案內容 Show 出 Memo1->Lines->Text = StrPas( szData ); // 釋放儲存檔案內容的記憶體大小 free( szData ); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { PChar szData; // 取得儲存檔案內容的記憶體大小 szData = (PChar)malloc( Memo1->Lines->Text.Length() 1 ); // 將 Pascal 字串轉成 0 字尾的字串 strcpy( szData , Memo1->Lines->Text.c_str() ); if ( !f ) // 判別是否已經開啟檔案了 { delete f; // 釋放檔案物件所佔的記憶體 f = NULL; // 將檔案指標歸零 } // 建立所要儲存檔案的物件 f = new TFileStream( "d:\\BCB.txt" , fmCreate ); // 從檔案指標設定為開頭處 f->Seek( 0 , soFromBeginning ); // 將 Memo 上的內容,寫入檔案中 f->WriteBuffer( szData , strlen( szData ) ); // 釋放儲存檔案內容的記憶體大小 free( szData ); delete f; // 釋放檔案物件所佔的記憶體 f = NULL; // 將檔案指標歸零 // 建立檔案物件指標,並且開啟成可讀的型態 } //---------------------------------------------------------------------
------
yangshuh |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |