程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 開發Delphi對象式數據管理功能(二)

開發Delphi對象式數據管理功能(二)

編輯:Delphi

20.1.6 TResourceStream對象 

  TResourceStream對象是另一類MemoryStream對象,它提供對Windows 應用程序資源的訪問,因此稱它為資源流。TResourceSream也是從TCustomMemoryStream 繼承的。因此在TCustomMemoryStream對象的基礎上,定義了與指定資源模塊或資源文件建立連接的構造方法,並且還覆蓋了Write,以實現向資源文件中寫數據。

下面介紹TResourceStream的實現

  1. 私有域

  TResourceStream沒有定義新的屬性,但它在private部分定義了兩個數據域HResInfoHGlobol和一個私有方法Initialize,它們的定義如下:

 

TResourceStream = class(TCustomMemoryStream)

private

HResInfo: HRSRC;

HGlobal: THandle;

procedure Initialize(Instance: THandle; Name, ResType: PChar);

end;

 

  HRSRC是描述Windows資源信息的結構句柄。HGlobal變量代表資源所在模塊的句柄。如果操作的是應用程序資源,HGlohal就代表EXE程序的句柄;如果是動態鏈接庫(DLL),則HGlobal 代表動態鏈接庫的句柄。TResourceStream對象使用這兩上變量訪問應用程序或動態鏈接庫中的資源。

  Initialize方法是TResourceStream對象內部使用的。它墓乖旆椒?/font>CreateCreateFromID都是調用Initialize方法完成對TResourceStream的初始化。它的實現如下:

 

procedure TResourceStream.Initialize(Instance: THandle; Name, ResType: PChar);

 

procedure Error;

begin

raise EResNotFound.Create(FmtLoadStr(SResNotFound, [Name]));

end;

 

begin

HResInfo := FindResource(Instance, Name, ResType);

if HResInfo = 0 then

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved