当前位置: 首页 > 图文教程 > 开发语言 > Delphi > 开发Delphi对象式数据管理功能(二)

Delphi
回调函数与Delphi的事件模型
Delphi中如何实现透明按钮
用Delphi编写打印程序的窍门
自己制作网页特效软件
Delphi+Cell全攻略
开发基于DCOM的局域网聊天室(一)
用简单的Tracer类来为应用写入跟踪
快捷方式/删除项/EXE自删除DIY
排序Select中Option项的一个示例
QQ聊天记录器演示程序(二)
QQ聊天记录器演示程序(一)
Delphi单元文件详解
Delphi学习:在Listbox加背景图
Delphi7目录结构----初学者参考
Delphi学习:在流中查找任意字串
制作一个IPhunter
播放自定义的声音
利用Dephi5编写控制面板程序
用Delphi编写Win2000服务程序
Spcomm串口控件的例程

开发Delphi对象式数据管理功能(二)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 44 ::
收藏到网摘: n/a

 

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