天天看點

Delphi 中把文本檔案裝入資源檔案中

怎麼把動畫檔案(avi)、位圖檔案(bitmap)、光标檔案(cursor)、圖示檔案(icon)、聲音檔案(wave)和字元串等裝入 res 資源檔案,有關文章已經很多了。但是怎麼把文本檔案也裝入資源檔案中,資料并不多。

    其實我們可以把文本檔案作為一種自定義的資源類型加入到資源檔案中。做法如下:

    (1)資源檔案的定義和生成:

    編輯資源定義檔案 myres.rc,内容如下:

    html1 mytext test1.htm

    html2 mytext test2.htm

    然後,把 myres.rc 加入工程中,會自動在 prj 檔案的開頭加入語句 {$R ‘myrec.res’ ‘myrec.rc’}。将來編譯程式時會自動生成資源檔案 myrec.res,并把資源加入 exe 檔案中。其中 mytext 我我們自定義的資源類型,html1 和 html2 是對應的文本檔案 test1.htm 和 test2.htm 的資源辨別名字,以後調用資源時就是用這個差別不同的資源。一旦生成了 exe 檔案,myrec.rc、myrec.res 和 test1.htm 以及 test2.htm 就沒有用處了,不必與 exe 檔案一起釋出。

    (2)資源的調用:

    用一段代碼來說明(在 Delphi7.0下調試通過),主要牽涉到對記憶體中流的操作,TResourceStream.Create() 是流的建立函數。可以把資源直接還原成一個文本檔案。還可以把流全部讀入到 buf 數組裡,用了流的 read 方法,然後把 buf 指派給字元串變量。

procedure TForm1.Button1Click(Sender: TObject);  

    var 

      Res: TResourceStream;  

      buf: array[0..10000] of char;  

      sHTML: string;  

    begin  

      Res := TResourceStream.Create(HInstance, ‘html1′, PChar(’mytext’));  

      //将資源儲存為檔案,即還原檔案  

      Res.SaveToFile(’text1.htm’);  

      //還可以進行流操作,取出文本檔案的内容到一個字元串變量中  

      res.Read(buf, res.Size);  

      sHTML := buf;  //将 pchar 類型轉換為 string 類型  

      ShowMessage(sHTML);  //對 ShowMessage 函數,ShowMessage(buf) 也正确  

      Res.Free;  

    end;  

    與生成文本檔案的資源類似,我們還可以把 mp3、rm、mwv、flash、jpg、gif 等等多媒體資源加入到資源檔案中,然後編譯到 exe 檔案中使用。

    ——————————————————-

<b></b>

<b>本文轉自網眼51CTO部落格,原文連結:http://blog.51cto.com/itwatch/286533</b><b>,如需轉載請自行聯系原作者</b>

繼續閱讀