我刚买了XE2版,安装了更新1 ISO,并制作完成 我的开源项目 用它编译。
事实上:
- 我将库的源代码路径添加到常规设置IDE(对于我使用的所有平台,即Windows 32位和64位到目前为止);
- 我编译了
TestSQLite3.dpr
我们框架的回归测试 - 没问题:编译EXE并通过所有测试;
- 我对IDE后台编译器有一个奇怪的问题:即使编译了项目,IDE也会显示一些关于未知文件的错误(不在底层编译器消息中,而是在类导航树的顶部 - 留给源代码编辑器) ),在.dpr源代码中,单位名称用红色下划线,我无法在源内导航(使用Ctrl +单击符号)。
我已经将库的源代码路径添加到项目选项中(对于Win32 / Win64 - 即使它已经在全局IDE级别设置)。现在,有关未知文件的错误消失了,但源代码中的单元名称仍以红色下划线,并且Ctrl + Click不起作用。
该 TestSQLite3.dpr
源代码 不指定单位的完整路径:
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编译器中的回归给我。
我问了这个问题 鲍勃博士 (我买了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作为跨平台编译器和调试器。