Wolfgang Chien's Homepage | Delphi學習筆記 - 問答篇 |
fin = _lopen('c:\test.bin',READ); IntHandle = GlobalAlloc(GM_...,sizeof(int)* NeedSize); //分配 NeedSize 個int, NeedSize 動態變化 IntPtr = GlobalLock(IntHandle); _lread(fin,IntPtr,sizeof(int) * NeedSize);
請問如何轉成 Delphi 的 code
小弟有好一陣子沒上 tw.bbs.comp.language 了, 在五月四日時曾貼過以下的信件, 內容應該可以回答您的問題, 請參考看看:
From: wolfgang@ms2.hinet.net (Wolfgang Chien) Newsgroups: tw.bbs.comp.language Subject: Re: [delphi]如何在程式中快速讀取文字檔案內容 Date: 4 May 1996 05:47:53 GMT In article <3CLL59$vLX@cis.nctu.edu.tw>, hah.bbs@cis.nctu.edu.tw says... >
>最近使用delphi內outline object的loadfromfile,但是卻希望能處理各行資料(在顯示在螢幕之前),若用只法可以嗎?我曾經用readln,可是很慢,有無別的方法?
事實上, 您的程式執行起來比較慢, 原因除了 File I/O 之外, 您也可以考慮在這種大量異動資料的時機, 應用 TOutLine 的 BeginUpdate 與 EndUpdate 方法, 避免每加入一筆, OutLine 物件即重新 Refresh 一次, 可以加快速度, 在OnLine help中以 BeginUpdate 與 EndUpdate作關鍵字可以找到說明, EndUpdate 這個主題中附有例子
如果只針對您提出來的問題, 以下有一個例子, 雖然不算完整, 但應該可以回答您提出來的問題(以 BlockRead 取代 Readln).
![]() |
1. File | New Project 開始一個新的專案 |
![]() |
2. 在 Form1 中放置 TListBox 與 TButton 元件各一 |
![]() |
3. 在 Button1 的 OnClick:
procedure TForm1.Button1Click(Sender: TObject); var fMyTest: file; lFileSizeOfMyTest: longint; pcBegin, pcEnd, pcNow: pchar; pcEndOfString: pchar; szLineText: array[0..254] of char; begin (* 以 BlockRead 縮短 I/O 的時間 事實上, 這個程式還不完整, 如果檔案很大時(大於64K), 應該用分段讀取的 的方式完成, 而不是一次將檔案全部讀入, 同時, 也還沒加上 Try..Except 的錯誤處理機制, anyway, 您應該可以看出方法的概要, 另外, 我也沒有 詳細 Debug 過 *) (* 讀入檔案的資料 *) AssignFile(fMyTest, 'c:\temp\temp6\autoexec.bat'); Reset(fMyTest, 1); lFileSizeOfMyTest := FileSize(fMyTest) + 1; pcBegin := AllocMem(lFileSizeOfMyTest); BlockRead(fMyTest, pcBegin^, lFileSizeOfMyTest - 1); CloseFile(fMyTest); ListBox1.Clear; (* 一行一行切割讀入的資料到 ListBox *) pcNow := pcBegin; pcEnd := pcBegin + lFileSizeOfMyTest - 1; while pcNow < pcEnd do begin pcEndOfString := StrPos(pcNow, #13#10); if pcEndOfString = nil then pcEndOfString := pcEnd; StrLCopy(szLineText, pcNow, pcEndOfString - pcNow); ListBox1.Items.Add(StrPas(szLineText)); pcNow := pcEndOfString + 2; end; FreeMem(pcBegin, lFileSizeOfMyTest); end; |
首頁 | 學習筆記 | 主題公園 | 軟體下載 | 關於本站 | 討論信群 | 相約下次 |