如何将 TXT 文件作为资源添加到我的 EXE 文件中?

Posted

技术标签:

【中文标题】如何将 TXT 文件作为资源添加到我的 EXE 文件中?【英文标题】:How do I add a TXT file as resource to my EXE file? 【发布时间】:2012-02-15 02:42:39 【问题描述】:

我有一个包含大约 10,000 行文本的 TXT 文件。我想在 TMemo 中显示这些行。 但我不想在我的程序中分发那个 TXT 文件。如何使用 stringtable 将其作为资源集成到我的 EXE 文件中,因为这需要为每一行添加一个标识符(因此我必须添加 10000 个标识符)。

_

我有 Delphi XE

【问题讨论】:

stringtable 实际上可以保存整个文本。 @user539...请举个例子 【参考方案1】:

我通常为这类资源创建一个RC文件(基本上是一个文本文件),然后添加行

MyText RCDATA ..\resources\filename.txt

为每个文件/资源​​放入RC文件。如果 RC 文件是项目的一部分,它将被编译(到res)并链接到 exe。要使用我通常使用TResourceStream的资源,即

var ResStream: TResourceStream;
ResStream := TResourceStream.Create(hInstance, 'MyText', RT_RCDATA);

顺便说一句,如果您在 IDE 中创建 RC 文件时没有自动将其添加到项目中,则添加如下行

$R 'myExtraRes.res' 'myExtraRes.RC'

进入项目文件,就在uses 列表之后。

【讨论】:

请注意,现代 Delphi 版本现在在 IDE 中集成了资源管理器,因此您不再需要使用 .rc 文件。 您能否提供一个答案,说明如何在没有 .rc 文件的情况下执行此操作? 以一种方式查看 Remy 的答案。还有一些为这项工作设计的组件,将数据保存到 DFM 中……但是使用 RC 文件有什么问题? 如果您不想使用 IDE 的资源管理器,上述步骤仍然很有效。您必须将.rc 文件添加到Delphi 项目中(如在项目> 添加到项目中,或者在较新的Delphi 版本中将其拖到项目管理器中(大概从2006 年开始))。 (什么?你还没有使用 Delphi 7?) 对于XE4,指令$R 'myExtraRes.res' 'myExtraRes.RC'在编译/构建EXE时不会将.rc文件编译成.res文件,不知道为什么,不得不在命令中使用BCC32换行...【参考方案2】:

由于您想在TMemo 中显示文本,您可以在设计时将文本直接复制/粘贴到TMemo.Lines 属性编辑器中。该文本将在编译时包含在拥有的 Form/Frame 的 DFM 资源中,并在运行时自动为您加载到 TMemo

【讨论】:

我知道,但这不是我想要的。 TMemo 只是作为示例(以及资源​​字符串是否正确存储的测试)。

以上是关于如何将 TXT 文件作为资源添加到我的 EXE 文件中?的主要内容,如果未能解决你的问题,请参考以下文章

C#,我可以将文件从流或其他文件保存到我的单个 exe 中吗?

标准输入 C++

如何使用非 Maven 项目作为 Maven 模块的资源? [复制]

如何将 .txt 文件添加到 shopware5

如何将“.txt”文件中的数据库备份迁移到我的新 Rails 应用程序?

Verpatch.exe 错误