明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Delphi中巧妙使用RES文件

[摘要]作者: 蘇涌在Delphi項(xiàng)目中,通常有一個(gè)與項(xiàng)目名稱(chēng)主文件名相同的.RES文件,該文件用于保存應(yīng)用程序圖標(biāo)等資源,對(duì)應(yīng)于此文件,在項(xiàng)目文件中一定含有編譯指示“R *.res”,告訴編譯器編譯時(shí)需要...
作者: 蘇涌

在Delphi項(xiàng)目中,通常有一個(gè)與項(xiàng)目名稱(chēng)主文件名相同的.RES文件,該文件用于保存應(yīng)用程序圖標(biāo)等資源,對(duì)應(yīng)于此文件,在項(xiàng)目文件中一定含有編譯指示“{$R *.res}”,告訴編譯器編譯時(shí)需要包含與項(xiàng)目主文件名相同的.RES文件。同樣,如果需要在應(yīng)用程序中以資源形式包含任何文件類(lèi)型,也可以利用.RES文件。本文將告訴你如何利用RES文件在Delphi程序內(nèi)部包含文件。

一創(chuàng)建.RES文件
這里以一組音頻文件為例。首先用記事本等任何文本編輯器編寫(xiě)文件“MyMusic.RC”。文件的格式及內(nèi)容如下:
SRC1 FILE1 OnlyYou.mp3
SRC2 FILE2 YesterdayOnceMore.mp3
SRC3 FILE3 MoonRiver.mp3


其中,每一行表示聲明一項(xiàng)資源,每一項(xiàng)資源的聲明包含三個(gè)參數(shù)定義,第一個(gè)參數(shù)是資源的名稱(chēng),第二個(gè)參數(shù)是資源的類(lèi)型描述(本例定義了三類(lèi)),第三個(gè)參數(shù)是文件名。參數(shù)之間必須由空格隔開(kāi)。
編寫(xiě)完成“MyMusic.RC”文件后,將其與上述三個(gè).MP3文件放置在同一文件夾中(為了避免由設(shè)置路徑帶來(lái)的麻煩)。然后以下面的命令行運(yùn)行應(yīng)用程序brcc32.exe(位于..\Delphi6\Bin):brcc32 mymusic.rc需要注意的是,該命令只能在命令行方式下執(zhí)行。如果系統(tǒng)的PATH環(huán)境變量中不包含Delphi的運(yùn)行路徑,那么你還需要將brcc32.exe與MyMusic.RC、三個(gè).MP3文件放置在同一路徑中進(jìn)行。運(yùn)行上述命令行后,將在同一路徑中得到文件“MyMusic.RES”,這就是一個(gè)獨(dú)立完整的資源文件,其格式是遵循Windows 標(biāo)準(zhǔn)的,因此可以在諸如VB、VC、CBuilder等多種開(kāi)發(fā)環(huán)境中使用。

二在程序中聲明包含.RES文件
你只需要在項(xiàng)目中的某個(gè)單元中(最好是你需要利用這些資源的單元,這樣會(huì)使你的應(yīng)用程序更具有可讀性)加入如下編譯指示:
$R MyMusic.RES}
{

盡管該編譯指示可以位于單元的任何位置,但為了使你的源代碼結(jié)構(gòu)合理,最好還是將其并列位于編譯指示“{$R *.dfm}”(每個(gè)含有窗體文件的單元中都含有該行編譯指示)。這里的編譯指示就明確告訴編譯器,在編譯應(yīng)用程序時(shí)需要將資源文件“MyMusic.RES”包含到應(yīng)用程序中。

三在運(yùn)行時(shí)獲取資源
上述兩步工作僅僅是基礎(chǔ)(但一定是必要的),利用資源才是根本目的。下面的過(guò)程將告訴你如何將應(yīng)用程序中包含的資源(文件)重新還原。
procedure MusicResToFile(const ResName, ResType,FileName: string);
var
Res: TResourceStream;
begin
Res := TResourceStream.Create(HInstance,ResName, PChar(ResType));
Res.SaveToFile(FileName); //將資源保存為文件,即還原文件
//你還可以進(jìn)行其它的流操作,在內(nèi)存中實(shí)現(xiàn)對(duì)資源利用而不必另存為文件
Res.Free;
end;


調(diào)用該過(guò)程的示例如:
MusicResToFile('SRC2', 'FILE2', 'TheSecondMusic.MP3');

值得一提的是,利用此方法,你完全可以制作自己的安裝程序,該安裝程序僅包含一個(gè)可執(zhí)行文件,在該可執(zhí)行文件中以資源的形式包含所有將要安裝的內(nèi)容(文件)。此外,如果在你的應(yīng)用程序中需要播放外部音頻文件(如背景音樂(lè)、聲音提示等),也可通過(guò)此方法將這些外部文件包含到應(yīng)用程序中,從而避免用戶誤刪這些音頻文件導(dǎo)致應(yīng)用程序的不完整。