Delphi 2009中的错误? - >项目搜索路径中找不到*。(在Delphi 2006中有效)

时间:2009-04-22 14:37:41

标签: delphi delphi-2009

我在从Delphi 2006迁移到Delphi 2009时遇到问题。使用JVCL的项目抱怨缺少jvconsts.res。该文件绝对存在。项目搜索路径包括文件所在的目录。 (注意:我的全局搜索路径中没有JVCL以使其更具可移植性)

但应该找到该文件,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.

这在Delphi 2006中编译得很好,但在Delphi 2009中没有。 经过一番搜索后,我找到了一种方法告诉Delphi文件的位置:gobal搜索路径或使用命令行编译器的-R参数。

在我写这篇文章时,我更接近真正的问题:在Delphi 2006中,.cfg-File包含以下行:

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

基本上它将项目搜索路径中的值复制到3个命令行选项中,因此它确保-R参数具有正确的值。

在Delphi 2009中(我将编译器输出的详细程度设置为“debug”)我从IDE获得结果命令行:

如果目录(c:\ Test \ 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

所以难怪为什么它不起作用。本地搜索路径未附加到Delphi 2009中的-R参数。

我会说,这显然是一个错误,但为什么似乎没有其他人有这个问题?我可以在我们使用的所有机器上重现它。也许这个错误只出现在德语版的Delphi 2009中?

1 个答案:

答案 0 :(得分:2)

解决方法是将其放入代码中:

{$R res\test.res}

这适用于我的Delphi 2009系统,包括IDE和命令行编译器。

请注意,我同意他们破坏了现有功能,您是否向Quality Portal添加了报告?如果没有,请执行:ttps://quality.embarcadero.com(这曾经是索引http://qc.embarcadero.com的搜索引擎但已被关闭; https://quality.embarcadero.com需要免费帐户才能搜索。< / p>