2013-06-12 64 views
3

我從命令行構建Delphi項目,並使用brcc32.exe構建.res文件。brcc32生成損壞的.RES文件

我已經爲我的.RC添加了一些自定義字符串,所以它看起來像這樣。 (這裏是從模板準備這個.RC有點Delphi5應用程序)

1 VERSIONINFO 
FILEVERSION 999,0,0,339 
FILEOS VOS__WINDOWS32 
FILETYPE VFT_APP 
BEGIN 
BLOCK "StringFileInfo" 
BEGIN 
    BLOCK "080904E4" 
    BEGIN 
    VALUE "FileDescription","Debug Build" 
    VALUE "FileVersion","999.0.0.339" 
    VALUE "LegalCopyright", "HuwCorp Finance Ltd" 
    VALUE "Revision","339" 
    VALUE "LastChangeRevision","335" 
    VALUE "LastChangeDate","2013-06-07" 
    VALUE "LastChangeTime","13:17:14" 
    VALUE "LastChangeAuthor","foo1234" 
    VALUE "BuildDate","12/06/2013" 
    VALUE "BuildTime","10:36:59" 
    END 
END 
BLOCK "VarFileInfo" 
BEGIN 
    VALUE "Translation", 2057, 1252 
END 
END 

一切都很好,到目前爲止,但BRCC32步驟產生錯位.res文件看起來像這樣(通過資源生成器看)

VALUE "LastChangeDate", "2013-06-074\x08\x01LastChangeTime" 
    VALUE "LastChangeTime", "13:17:146\x07\x01LastChangeAuthor" 
    VALUE "LastChangeAuthor", "foo1234" 
    VALUE "BuildDate", "12/06/2013,\x08\x01BuildTime" 
    VALUE "BuildTime", "10:36:59D" 

確實在構建的.exe上單擊屬性/版本顯示垃圾字符例如BuildTime顯示爲10:36:59D

任何人都可以提出爲什麼?

+0

我相信這是相關的,雖然我不能準確說出它的意義是什麼,但是當我堅持到「標準」領域我可以把一個不再僅僅是重現該問題'CompanyName'字段中的字符串 –

回答

8

StringTable資源需要是C樣式的空終止(即使在使用Borland資源編譯器時)。

試試這個:

VALUE "FileDescription","Debug Build\0" 
VALUE "FileVersion","999.0.0.339\0" 
VALUE "LegalCopyright", "HuwCorp Finance Ltd\0" 
VALUE "Revision","339\0" 
VALUE "LastChangeRevision","335\0" 
VALUE "LastChangeDate","2013-06-07\0" 
VALUE "LastChangeTime","13:17:14\0" 
VALUE "LastChangeAuthor","foo1234\0" 
VALUE "BuildDate","12/06/2013\0" 
VALUE "BuildTime","10:36:59\0" 
+0

@David:謝謝。字符串名稱後面第一個'\ 0'的需要是我到辦公室時要檢查的事情之一。 :-) –

+0

Fab - 排序。但它仍然很奇怪;我的LegalCopyRight是硬編碼的,沒有'\ 0',但它都可以很好地工作。 –

+0

@HughJones可能有一些填充字節碰巧是零,而你得到(非)幸運。肯是對的,但你確實需要null來終止值# –