如何寫入/讀取二進位檔案?有範例嗎? |
|
te_hsun
一般會員 發表:43 回覆:34 積分:20 註冊:2002-03-25 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
te_hsun
一般會員 發表:43 回覆:34 積分:20 註冊:2002-03-25 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 您好: 謝謝您的回應! 我是想要存到一個檔案裡,不是存到資料庫裡 內含圖片...或一些文字 來輔助決定程式進行的方式 只是不知道要如何將它們通通存到指定的檔案裡 及如何將它取出來應用 例如說: 這個紀錄檔案裡有 1.主題名稱(string) 2.圖片(圖檔格式) 3.顯示方式(integer)1.若存到資料庫,則可以任意索引出所要的資料,排序問題也不問擔心 2.若存到一個儲存檔案,則要考慮下列問題: a.如何將要存入的檔案連同記錄資料存入這個儲存檔案 b.存入後如何能由程式讀出還原成原來的檔案 c.如何快速的搜尋出所要找的檔案是存在儲存檔案的那一個位置, 資料愈來愈多時,排序及搜尋的演算法問題 以下作一探討: a.假設要存入的檔案叫file1.doc,儲存檔案名稱叫:all.dat 寫入的方法為: var sFileTitle:string[80]; sFileName:string[40]; buf:array[0..1023] of byte; F,f2:File; ByteRead,ByteWrite:integer; begin AssignFile(f,'c:\All.Dat'); if fileexists('c:\All.Dat') then reset(f,1) else rewrite(f,1); seek(f,filesize(f)); SFileTitle:='a Test File'; SFileName:='c:\test.bmp'; BlockWrite(f,sFileTitle,80,ByteWrite); BlockWrite(f,sFileName,40,ByteWrite); AssignFile(f2,SFileName); Reset(f2,1); repeat BlockRead(f2,buf,sizeof(buf),ByteRead); if ByteRead>0 then BlockWrite(f,buf,byteread,bytewrite); until ByteRead=0; CloseFile(f); CloseFile(f2); end;b.讀出還原檔案的方法為: var sFileTitle:string[80]; sFileName:string[40]; buf:array[0..1023] of byte; F,f2:File; ByteRead,ByteWrite:integer; begin AssignFile(f,'c:\All.Dat'); reset(f,1); BlockRead(f,sFileTitle,80,ByteWrite); BlockRead(f,sFileName,40,ByteWrite); AssignFile(f2,SFileName); Rewrite(f2,1); repeat BlockRead(f,buf,sizeof(buf),ByteRead); if ByteRead>0 then BlockWrite(f2,buf,byteread,bytewrite); until ByteRead=0; CloseFile(f); CloseFile(f2); end;c.這個問題處理起來可能不容易,要先決定採用線性搜尋法或二元搜尋法,儲存在檔案中的架構也要有所調整,不然就分兩個檔,一個是索引檔(內存二元樹),一個是資料檔(線性儲存),從索引檔在去讀出資料檔...我想再寫下去可能就快要寫一個資料管理庫程式了! 所以最好還是存在資料庫中,一切麻煩事交給Database Server! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |