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 赋值给字符串变量。
    

 
  1. procedure TForm1.Button1Click(Sender: TObject);  
  2.     var 
  3.       Res: TResourceStream;  
  4.       buf: array[0..10000] of char;  
  5.       sHTML: string;  
  6.     begin  
  7.       Res := TResourceStream.Create(HInstance, ‘html1′, PChar(’mytext’));  
  8.  
  9.       //将资源保存为文件,即还原文件  
  10.       Res.SaveToFile(’text1.htm’);  
  11.  
  12.       //还可以进行流操作,取出文本文件的内容到一个字符串变量中  
  13.       res.Read(buf, res.Size);  
  14.       sHTML := buf;  //将 pchar 类型转换为 string 类型  
  15.       ShowMessage(sHTML);  //对 ShowMessage 函数,ShowMessage(buf) 也正确  
  16.       Res.Free;  
  17.     end;  
  18.  

    与生成文本文件的资源类似,我们还可以把 mp3、rm、mwv、flash、jpg、gif 等等多媒体资源加入到资源文件中,然后编译到 exe 文件中使用。

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











本文转自网眼51CTO博客,原文链接:http://blog.51cto.com/itwatch/286533,如需转载请自行联系原作者

相关文章
|
7月前
|
编译器 开发工具 C语言
【C语言】第一回(源(.c)文件怎么生成可执程序(.exe)文件)
【C语言】第一回(源(.c)文件怎么生成可执程序(.exe)文件)
110 0
|
21天前
|
XML 存储 Java
处理资源文件的编码问题
本文介绍了如何处理资源文件中的编码问题,包括常见编码格式、编码转换方法以及在不同编程语言和开发环境中的应用技巧。
|
7月前
|
存储 C#
【Untiy 3D】C#中文件夹与读写文件操作详解(附测试代码 超详细)
【Untiy 3D】C#中文件夹与读写文件操作详解(附测试代码 超详细)
72 0
|
Java 应用服务中间件 容器
javaweb项目中引用带有dll文件处理方式
javaweb项目中引用带有dll文件处理方式
Delphi文件操作【1】- 记录文件
Delphi文件操作【1】- 记录文件
115 0
Delphi文件操作【1】- 记录文件
040.文件的字数统计程序
040.文件的字数统计程序
97 0
|
C# 文件存储 C++
C# 程序文件
C# 程序文件
118 0
Qt 解决程序动态库必须和可执行文件放同一文件夹
文章目录 Qt 解决程序动态库必须和可执行文件放同一文件夹 1 背景 2 使用场景描述 2.1 添加动态库 2.2 更改编译目录 2.3 复制库文件到编译目录并运行程序 2.4 复制库文件到程序根目录 2.5 Release下测试 3 实现动态库文件夹分类 3.1 需求 3.2 实现 3.2.1 查看项目运行配置 3.3 结果 3.3 结果
678 0
Qt 解决程序动态库必须和可执行文件放同一文件夹
|
vr&ar 图形学
【100个 Unity小知识点】☀️ | Unity 可以在编辑器中读取Excel,打包成exe后就无法读取的问题
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!