封裝資源文件

 1.編寫 RC 腳本文本

用記事本或其它文本編輯器編寫一個擴展名爲“.rc”的文件。

在Delphi項目中,通常有一個與項目名稱主文件名相同的.RES文件,該文件用於保存應用程序圖標等資源,對應於此文件,在項目文件中一定含有編譯指示“{$R   *.res}”,告訴編譯器編譯時需要包含與項目主文件名相同的.RES文件。同樣,如果需要在應用程序中以資源形式包含任何文件類型,也可以利用.RES文件。本文將告訴你如何利用RES文件在Delphi程序內部包含文件。  
   
  一創建.RES文件  
  這裏以一組音頻文件爲例。首先用記事本等任何文本編輯器編寫文件“MyMusic.RC”。文件的格式及內容如下: 


資源標識符  資源類型關鍵字  資源文件名

其中“資源類型關鍵字”用於標識資源文件的類型:

AVI     無聲動畫

BITMAP  位圖文件

CURSOR  光標文件

ICON    圖標文件

WAVE    聲音文件

 
  SRC1   WAVE   OnlyYou.mp3  
  SRC2   WAVE   YesterdayOnceMore.mp3  
  SRC3   WAVE   MoonRiver.mp3  
   
   
  其中,每一行表示聲明一項資源,每一項資源的聲明包含三個參數定義,第一個參數是資源的名稱,第二個參數是資源的類型描述(本例定義了三類),第三個參數是文件名。參數之間必須由空格隔開。  
  編寫完成“MyMusic.RC”文件後,將其與上述三個.MP3文件放置在同一文件夾中(爲了避免由設置路徑帶來的麻煩)。然後以下面的命令行運行應用程序brcc32.exe(位於../Delphi6/Bin):brcc32   mymusic.rc需要注意的是,該命令只能在命令行方式下執行。如果系統的PATH環境變量中不包含Delphi的運行路徑,那麼你還需要將brcc32.exe與MyMusic.RC、三個.MP3文件放置在同一路徑中進行。運行上述命令行後,將在同一路徑中得到文件“MyMusic.RES”,這就是一個獨立完整的資源文件,其格式是遵循Windows   標準的,因此可以在諸如VB、VC、CBuilder等多種開發環境中使用。  
   
  二在程序中聲明包含.RES文件  
  你只需要在項目中的某個單元中(最好是你需要利用這些資源的單元,這樣會使你的應用程序更具有可讀性)加入如下編譯指示:  
  $R   MyMusic.RES}  
  {    
   
  儘管該編譯指示可以位於單元的任何位置,但爲了使你的源代碼結構合理,最好還是將其並列位於編譯指示“{$R   *.dfm}”(每個含有窗體文件的單元中都含有該行編譯指示)。這裏的編譯指示就明確告訴編譯器,在編譯應用程序時需要將資源文件“MyMusic.RES”包含到應用程序中。  
   
  三在運行時獲取資源  
  上述兩步工作僅僅是基礎(但一定是必要的),利用資源纔是根本目的。下面的過程將告訴你如何將應用程序中包含的資源(文件)重新還原。  
  procedure   MusicResToFile(const   ResName,   ResType,FileName:   string);  
  var  
  Res:   TResourceStream;  
  begin  
  Res   :=   TResourceStream.Create(HInstance,ResName,   PChar(ResType));  
  Res.SaveToFile(FileName);   //將資源保存爲文件,即還原文件  
  //你還可以進行其它的流操作,在內存中實現對資源利用而不必另存爲文件  
  Res.Free;  
  end;  
   
   
  調用該過程的示例如:  
  MusicResToFile('SRC2',   'FILE2',   'TheSecondMusic.MP3');    
   
  值得一提的是,利用此方法,你完全可以製作自己的安裝程序,該安裝程序僅包含一個可執行文件,在該可執行文件中以資源的形式包含所有將要安裝的內容(文件)。此外,如果在你的應用程序中需要播放外部音頻文件(如背景音樂、聲音提示等),也可通過此方法將這些外部文件包含到應用程序中,從而避免用戶誤刪這些音頻文件導致應用程序的不完整。

var
AImgHandle:THandle;
begin
  AImgHandle:=LoadLibrary('dlfrReport.dll');
   
 Image1.Picture.Bitmap.LoadFromResourceName(AImgHandle,'SRC3');

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章