【发布时间】:2017-02-01 09:15:21
【问题描述】:
我正在修改我的 Delphi 项目以使用版本信息资源文件,而不是在项目文件中存储版本信息。
我的 VersionInfo.rc 文件:
1 VERSIONINFO
FILEVERSION 1,10,0,999
PRODUCTVERSION 1,10,0,0
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
VALUE "CompanyName", "Company Inc.\0"
VALUE "FileDescription", "Product\231\0"
VALUE "FileVersion", "1.10.0.999\0"
VALUE "InternalName", "Product\231\0"
VALUE "LegalCopyright", "\251 2016 Company Inc.\0"
VALUE "LegalTrademarks", "Company\231 Product\231\0"
VALUE "ProductName", "Product\231\0"
VALUE "ProductVersion", "1.10\0"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x409, 1252
}
}
注册商标 (\256) 和版权 (\251) 符号在文件的属性对话框中正确显示,但商标 (\231) 根本不显示。除非它不可打印,否则似乎没有字符显示在它的位置。我也尝试过直接在资源中使用符号而不是八进制代码,我看到了相同的行为。
当商标符号作为我的项目选项的一部分存储时,它会正确显示。
如何在我的资源中插入商标符号?
编辑:附加信息
我正在使用 RAD Studio 10.1 Berlin,并按照this StackOverflow post 的回答来创建我的资源文件,配置我的项目选项,并使用 {$R 'VersionInfo.res' 将资源包含在项目源中'版本信息.rc'}。我曾尝试使用 ANSI、UTF-8、UTF-16 BE 和 LE 对我的 .rc 文件进行编码,但商标无法在文件属性对话框中正确显示,或者在构建时出现 BRCC32 错误。
我发现this web page 建议使用八进制代码来获取版权。我在我的 VersionInfo.rc 文件中尝试了商标的八进制代码,但又看到了同样的结果。
我还尝试使用 rc.exe 编译资源并使用 Delphi 项目菜单中的“添加到项目...”菜单项将其添加到我的项目中。我在构建时收到“不支持的 16 位资源...”错误。
【问题讨论】:
-
为什么要在 ANSI 中这样做?
-
我不知道!我昨天偶然发现这是一种更好的注入版本信息的方法,我从博客/文章中复制了一个示例文件,发现另一个网站说符号必须使用八进制代码。
-
使用现代编辑器,将您的 .RC 文件保存为 Unicode(不是 ansi 文件)。还要小心您使用的是哪个 RC。有一些旧的 Delphi 版本附带了古老的资源编译器,它们可能不支持现代 Windows 资源编译器支持的相同内容。您没有说明您的 Delphi 版本,或者您使用的是 RC 或 BRCC
-
我使用的是 RAD Studio 10.1。我从最初的帖子中省略了我认为是关于我失败的企业的多余信息,但反对票表明我应该把它包括在内。我使用 Notepad++ 并尝试使用 ANSI/UTF-8/UTF-16 LE & BE 保存 .rc 文件。包括使用 {$R n.RES n.rc} 的资源对所有人都失败了,但是 ANSI 编码因此我尝试了八进制代码。那使用brcc32。使用 rc 创建 .res 在 Delphi 中会导致各种关于 Unsupported 16bit 资源的问题。在编辑我的问题以概述我之前的研究和今天的研究之前,我将完成我的新测试。
标签: delphi version versioninfo resource-file