软盘君
本站的沙雕站长,半吊子运维
Floppy β Studio

使用Delphi在程序资源文件中内置文件并释放

软盘君比较喜欢怀旧,所以仍然使用Delphi7。发送HTTP请求没有问题,但是如果要HTTPS的话就问题大大的有了,需要OpenSSL,但是网上没有找到静态连接OpenSSL的教程,所以被迫要带着这沉重的两个DLL文件。

但是下载的文件要拖着两个DLL显然不是我所希望看到的。所以,我有了需求:把两个DLL文件写进程序内部,并在需要使用的时候释放出来。

参考了一篇讲述资源文件使用的文章:Delphi 7资源文件的使用_无幻的博客-CSDN博客_delphi7 资源文件

但我看到的跟他看到的不太一样,可能因为我还没学透这个Delphi。

但他给出的添加资源文件的步骤是没有问题的。

首先,要先有一个资源文件。

https://fimg.tk/storage10/19dbe855da663907d695948b4b9732d9.png

这是我创建了一个空白的TXT文件,然后后缀改成rc,再用VS打开后修改,修改后再删减出来的。

需要注意的是:Visual Studio中似乎没有列出这样的文件类型,我在stack overflow上看到一个帖子,说二进制文件应选用RCDATA类型存放,经测试,确实可以实现。(原文地址我没有保存,故无法在这里备注)

创建RC文件之后,需要在Delphi中引入它

https://fimg.tk/storage10/fcddd35fc86e7dfe5b097e8ac55267ae.png

点击添加到工程,然后将文件类型改选为RC资源文件,再选定你的RC文件

https://fimg.tk/storage11/ea3c7f8ea13dd30333bef4d1f60fff19.png

添加后,可以在查看-工程管理器中查看

https://fimg.tk/storage11/f628122f74c2d577c40fd3c8e6791455.png

这样,就成功写进去了。接下来,需要让它可以把文件写出来。

首先,定义一个变量:

然后到函数体的begin部分中,创建一个资源流

注释:资源类型为 RT_ 开头的常量,可以在逗号后面输入RT_后按下ctrl+空格以查看所有可用的常量;这里我使用的是RT_RCDATA

打开了这样一个流之后,我们要把它写出来。我到处找文件流的用法,但是并没有写明白。

最后使用了简单、直接的方式——TResourceStream下有一个名为SaveToFile的方法

最后我的成品代码是长这样的(begin后面的):

当然这个Free我猜测是释放这个变量,我执行是为了避免出现什么岔子,我也不知道不加上能不能正常工作

本文章(使用Delphi在程序资源文件中内置文件并释放)使用CC BY-SA 3.0进行许可,转载请注明出处:https://www.iruanp.com/archives/1019 如果你认为我们的文章对您有帮助,请在Youtube订阅软盘君的频道

Floppy

文章作者

生命不息,折腾不止~这是一个沙雕博主,不务正业的那种,还喜欢瞎折腾~

Floppy β Studio

使用Delphi在程序资源文件中内置文件并释放
软盘君比较喜欢怀旧,所以仍然使用Delphi7。发送HTTP请求没有问题,但是如果要HTTPS的话就问题大大的有了,需要OpenSSL,但是网上没有找到静态连接OpenSSL的教程,所以被迫要带着这沉重的…
扫描二维码继续阅读
2022-04-29