Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
德尔福2009的Bug->;*。在项目搜索路径中找不到资源(在Delphi 2006中工作)_Delphi_Delphi 2009 - Fatal编程技术网

德尔福2009的Bug->;*。在项目搜索路径中找不到资源(在Delphi 2006中工作)

德尔福2009的Bug->;*。在项目搜索路径中找不到资源(在Delphi 2006中工作),delphi,delphi-2009,Delphi,Delphi 2009,从Delphi 2006迁移到Delphi 2009时遇到问题。使用JVCL的项目抱怨jvconsts.res丢失。文件肯定在那里。项目搜索路径包括文件所在的目录。(注意:我的全局搜索路径中没有JVCL以使其更具可移植性) 但应该找到该文件,如文件所述: “…链接器搜索.res 目录中的文件[…] 在“搜索路径”输入框中指定 在目录/条件页面上 “项目|选项对话框”的 这不是JVCL的问题:一个极简方案表明: 想象一下这个目录结构: C:\Test\ResTest.dpr C:\Test\Res

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

但应该找到该文件,如文件所述:

“…链接器搜索.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文件包含以下行:

-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参数


我想说,这显然是一个bug,但为什么似乎没有其他人有这个问题?我可以在我们使用的所有机器上复制它。也许这个错误只存在于德尔福2009的德语版本中

一种解决方法是将此代码替换为:

{$R res\test.res}
这在我使用Delphi2009的系统上运行,包括IDE和命令行编译器


请注意,我同意他们破坏了现有功能,您是否向质量门户添加了报告?如果没有,请:ttps://quality.embarcadero.com (这曾经是索引的搜索引擎,但已经关闭;需要一个免费帐户进行搜索)。

这将适用于我们的代码,但我必须修改第三方代码(JVCL)我真的很想避免。我在QualityCentral中为这个bug创建了一个条目#73249I同意您不想修改第三方代码的事实。谢谢你的报告。我刚刚检查、修改了一些报告字段,然后对其进行了升级,以便CodeGear的Q&A团队可以在其内部系统中看到它。请注意,这样您就不能再访问
qc.embarcadero.com
链接了。如果您需要访问旧的QC数据,请查看。