1

我在 Delphi 项目中使用 Synapse 库来进行一些网络连接。

当我尝试使用外部单元中定义的类型之一时,即:'TTCPBlockSocket',它有红色下划线并显示“未声明的标识符'TTCPBlockSocket'”。

这些文件都在正确的文件夹中,“uses”语句可以找到它们并且没有显示错误。

奇怪的是,我在另一个项目中进行了相同的设置,并且该项目中没有错误。

注意:我无法安装/编辑软件/设置,因此无法添加任何修复。

4

1 回答 1

10

这是Error Insight中的一个众所周知的错误。自从在 Delphi 2005 或 2006 中首次引入 Error Insight 以来,它就一直存在,并且今天仍然存在于 Delphi XE5 中。

这是由用于 Error Insight 的不同编译器引起的,显然,它无法访问 Code Insight 编译器(帮助您在代码编辑器中查找符号的那个)或命令行编译器使用的相同符号集(用于为应用程序或包实际编译代码的那个)。因此,它仅使用项目 (.dpr) 文件中实际引用的文件来定位符号,并且由于代码中 uses 子句中的大多数文件不在 .dpr 中,因此无法找到它们。

有两种修复方法(一种非常简单,另一种有效但很麻烦):

  1. (最简单的)。完全关闭 Error Insight,在 Tools->Options,Editor Options 部分,Code Insight;只需取消选中错误洞察框。我更喜欢这个,因为 Error Insight 无论如何都不能正常工作,它避免了每 10 分钟必须使用另一个选项的烦恼。这是我安装新版本 IDE 并看到红色下划线时做的第一件事。

  2. (痛苦的方式)。对包含下划线符号之一的每个单元使用 Project->Add to project。这会将每个单元的引用添加到项目 .dpr 文件中,这会导致其大小急剧增加。这很痛苦,因为您通常必须为尚未添加的每个单元(根据我的经验,包括那些属于标准 VCL/RTL 的单元)执行此操作,并且很快就会变得烦人。Ctrl+F9IMO,Error Insight 不会告诉您任何快速不会告诉您的事情。

于 2014-01-31T16:03:25.487 回答