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

如何寫入/讀取二進位檔案?有範例嗎?

 
te_hsun
一般會員


發表:43
回覆:34
積分:20
註冊:2002-03-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-04-19 20:37:50 IP:203.204.xxx.xxx 未訂閱
如何將圖片..聲音....等等非文字的檔案 存在一個檔案中 隨時可以讀取或存入? 一般書籍都只有"檔案複製"的範例...
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-04-20 08:24:08 IP:61.219.xxx.xxx 未訂閱
引言: 如何將圖片..聲音....等等非文字的檔案 存在一個檔案中 隨時可以讀取或存入? 一般書籍都只有"檔案複製"的範例...
您是要作何運用呢? 還有是要存到一個檔案或通通存入資料庫? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
te_hsun
一般會員


發表:43
回覆:34
積分:20
註冊:2002-03-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-04-21 00:01:32 IP:203.204.xxx.xxx 未訂閱
您好: 謝謝您的回應! 我是想要存到一個檔案裡,不是存到資料庫裡 內含圖片...或一些文字 來輔助決定程式進行的方式 只是不知道要如何將它們通通存到指定的檔案裡 及如何將它取出來應用 例如說: 這個紀錄檔案裡有 1.主題名稱(string) 2.圖片(圖檔格式) 3.顯示方式(integer)
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-04-21 09:05:46 IP:61.219.xxx.xxx 未訂閱
引言: 您好: 謝謝您的回應! 我是想要存到一個檔案裡,不是存到資料庫裡 內含圖片...或一些文字 來輔助決定程式進行的方式 只是不知道要如何將它們通通存到指定的檔案裡 及如何將它取出來應用 例如說: 這個紀錄檔案裡有 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討論區站長~~~
系統時間:2017-10-17 19:20:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!