Delphi XE2后台IDE编译器无法找到源路径

时间:2011-10-03 08:10:53

标签: delphi ide delphi-xe2

我刚买了XE2版本,安装了更新1 ISO,并用my Open Source projects编译了它。

事实上:

  • 我将库的源代码路径添加到常规设置IDE(对于我使用的所有平台,即Windows 32位和64位到目前为止);
  • 我编译了我们框架的TestSQLite3.dpr回归测试 - 没问题:编译EXE并通过所有测试;
  • 我对IDE后台编译器有一个奇怪的问题:即使编译了项目,IDE也会显示一些有关未知文件的错误(不在底层编译器消息中,而是在类导航树的顶部 - 留给源代码编辑器),在.dpr源代码中,单元名称用红色加下划线,我无法在源代码内导航(使用Ctrl +单击符号)。

我已经将库的源代码路径添加到项目选项中(对于Win32 / Win64 - 即使它已经在全局IDE级别设置)。现在,有关未知文件的错误消失了,但是源代码中的单元名称仍然用红色加下划线,而Ctrl + Click不起作用。

TestSQLite3.dpr source code未指定单位的完整路径:

uses
  {$I SynDprUses.inc}
  Windows,
  Messages,
  SysUtils,
  Classes,
  SynCrypto,
  SynCrtSock,
  SynCommons,
  SynDB,
  SynOleDB,
  SynDBOracle,
  (...)

在上面的行中,SynCrypto,SynCrtSock,SynCommons用红色下划线标注。

我的实际猜测是.dpr(SynCrypto in '..\SynCrypto.pas')中需要完整路径。我没有测试这个,因为我没有XE2在工作。

由于以前的IDE使用这种源代码(从Delphi 6到XE)没有问题,我想知道是否存在回归的可能性,或者以前的版本中没有新选项IDE(可能是基于平台的),我没有正确设置。或者.dpr现在可能需要完整路径 - 但这听起来像Code / Error Insight编译器中的回归给我。

2 个答案:

答案 0 :(得分:11)

我向Dr Bob提出了问题(由我购买了XE2许可证 - 因为1 $ = 1€方程式听起来有点不公平,我至少想让一个真正的Delphi专家成为我的经销商)

以下是他的回答:

  

你没有犯错。问题是有三个   XE2中的编译器(与之前版本的Delphi一样):真实的   编译器(工作正常),Code Insight编译器(即   更快),Error Insight编译器(必须更快),   和语法高亮解析器(这是最快的)。

     

XE2引入了许多使得普通编译器的功能   更慢,并给了Code Insight和Error Insight编译器一些   麻烦。首先,我们有新的目标:Win32,Win64和OSX   这导致每个目标的搜索路径不同(请参阅   $ PLATFORM指令),以及构建配置,尽管有   每个PLATFORM只有一个“库路径”(而不是构建版本)   配置)。

     

第二个复合因素是虚线单位名称(作用单位)   引入的名称)。 Windows不再是Windows,而是   Winapi.Windows。

     

我的猜测是这两个额外的复杂因素导致   Code Insight和Error Insight编译器的问题。注意   真正的编译器仍然有效。但Error Insight显示不正确   错误,Code Insight并不总是适用于这些单位。

     

您可以尝试再次将它们显式添加到项目中(其中   如果您在问题中提到,将使用完整路径   堆栈溢出也是如此)。

所以我担心这会有些回归......

在结束问题时编辑:

第一点是添加完整路径:

  SynPdf in '..\SynPdf.pas',
.dpr中的

确实让文件被找到 - 但后台编译器仍然丢失,无法在本机构中找到类声明。

另一个回归样本:

   var Thread: array[0..3] of integer; 
       Handle: array[0..high(Thread)] of integer;

是一个非常安全的语法,编译得很好,由之前的Error Insight编译器解释没有任何问题(自Delphi 5起作用),但在XE2下失败。

我对XE2 IDE有点失望。编译器使它工作。但IDE确实令人失望。从我的角度来看,这是不可用的。我将继续使用Delphi 7作为我的主编辑器,并使用XE2作为跨平台编译器和调试器。

答案 1 :(得分:0)

可能与Barry Kelly在这里提到的内容有关:

http://blog.barrkel.com/2011/10/delphi-xe2-compiler-performance.html