2016-09-23 59 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位資源...」錯誤。