2009-04-22 33 views
6

我從Delphi 2006遷移到Delphi 2009時出現問題。使用JVCL的項目抱怨jvconsts.res丟失。該文件是definitly那裏。項目搜索路徑包括文件所在的目錄。 (注:我沒有JVCL在我的全局搜索路徑,使其更便攜)德爾福2009年的錯誤? - > * .res在項目搜索路徑中找不到(在Delphi 2006中工作)

但該文件應該可以發現,作爲Delphi Help說:

」 ......鏈接搜索.RES 文件[...]在目錄/條件判斷頁面的項目 在搜索路徑輸入框中 指定的目錄 |選項對話框」

這不是一個問題JVCL:一簡約程序顯示了這一點:

想象一下這樣的目錄結構:

C:\Test\ResTest.dpr 
C:\Test\Res\Test.res 

這裏是ResTest.dpr:

program ResTest; 

{$R test.res} // not found even if "c:\Test\Res" is in project search path 

begin 
end. 

編譯沒有在2006年德爾福但不是在2009年德爾福一些 搜索後,我發現,這是一種告訴Delphi文件的位置:使用命令行編譯器的全局搜索路徑或-R參數。

我寫這篇文章,我更接近真正的問題:2006年,德爾福的.CFG,文件包括線:

-I"c:\Test\Res" 
-U"c:\Test\Res" 
-R"c:\Test\Res" 

Basicly它複製從項目搜索路徑的值到3命令行選項,因此它確保-R參數具有正確的值。

在2009年德爾福(我設定的編譯器輸出的詳細程度,以「調試」),我從IDE生成的命令行:

如果該目錄(C:\測試\ RES),包含在項目搜索路徑:

dcc32.exe --no-config -M -Q -ID:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib" -LE"C:\Users\Public\Documents\RAD Studio\6.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\6.0\Dcp" -O"c:\program files\codegear\rad studio\6.0\Lib" -R"c:\program files\codegear\rad studio\6.0\Lib" -UD:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib" -K00400000 ResTest.dpr 

如果該目錄包含在全局搜索路徑

dcc32.exe --no-config -M -Q -ID:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -LE"C:\Users\Public\Documents\RAD Studio\6.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\6.0\Dcp" -O"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -R"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -UD:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -K00400000 ResTest.dpr 

也許它很難在這裏看到:不同的是-R參數:

Local Search Path -> -R"c:\program files\codegear\rad studio\6.0\Lib" 
Global Search Path -> -R"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res 

所以這也難怪爲什麼它不起作用。本地搜索路徑不附加到德爾福2009年的-R參數。

我會說,這顯然是一個錯誤,但爲什麼似乎沒有人有這個問題?我可以在我們使用的所有機器上重現它。也許這個錯誤只存在於Delphi 2009的德文版本中?

回答

2

一種解決方法是把這個在你的代碼代替:

{$R res\test.res} 

與德爾福2009年我的系統上工作,既與IDE和命令行編譯器。

請注意,我同意他們打破了現有功能,是否向Quality Portal添加了報告?如果沒有,請執行以下操作:ttps://quality.embarcadero.com(以前是搜索引擎索引爲http://qc.embarcadero.com,但已關閉; https://quality.embarcadero.com需要免費帳戶才能搜索)。

+0

這將與我們的代碼一起工作,但我必須修改我非常喜歡避免的第三方代碼(JVCL)。 – 2009-04-22 15:49:50

相關問題