2016-09-23 56 views
-1

我正在修改我的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柏林,我是从之后的this StackOverflow post答案创建我的资源文件,配置我的项目选项,并在项目中包含源资源使用{$ R'VersionInfo.res''VersionInfo.rc'}。我曾尝试使用ANSI,UTF-8,UTF-16 BE和LE编码我的.rc文件,并且商标无法在文件属性对话框中正确显示,或者在构建时出现BRCC32错误。

我发现this web page建议使用八进制代码的版权。我在我的VersionInfo.rc文件中尝试了商标的八进制代码,并再次看到相同的内容。

我也尝试使用rc.exe编译资源,并使用Delphi的“项目”菜单中的“添加到项目...”菜单项将其添加到我的项目中。构建时收到“不支持的16位资源...”错误。

+0

你为什么要在ANSI中这样做? –

+0

我不知道!从字面上看,我昨天偶然发现这是一种更好的注入版本信息的方法,我从博客/文章中复制了一个示例文件,并发现另一个网站说八进制代码必须用于符号。 –

+0

http://stackoverflow.com/questions/12692803/are-resource-files-compiled-as-unicode-or-ansi-code-page –

回答

1

大卫和沃伦的评论后,我重新考察了我的测试,发现以下作品。

  1. 根据需要创建包含文本和符号的.rc文件。鉴于我的文件内容,ANSI编码和UCS-2 Little Endian都能很好地运行此文件。
  2. 使用像rc.exe这样的资源编译器编译资源
  3. 手动将编译资源添加到项目DPR或使用Delphi的“添加到项目”功能。如果使用“添加到项目”,确保关闭.RES文件的自动打开的选项卡,否则在构建时会导致“不支持的16位资源...”错误。