Delphi 2007和{$IFDEF…}指令未能看到我们的条件
我们在代码库中的组件文件中包含以下内容:Delphi 2007和{$IFDEF…}指令未能看到我们的条件,delphi,delphi-2007,conditional-compilation,Delphi,Delphi 2007,Conditional Compilation,我们在代码库中的组件文件中包含以下内容: {$IFDEF ADO} FDatabase : TADODatabase; {$ELSE} FDatabase : TODBCDatabase; {$ENDIF} 原因是,对于各种遗留应用程序,将使用一种或另一种类型的数据库连接和一组类 然而,在配置新机器时,似乎没有考虑我们的条件。在项目设置中,它说“ADO;DEBUG”,但它用odbc类型编译上述代码 奇怪的是它并不一致。作为同一项目的一部分构建的两个不同单元使用单独的设置。换句话说,在一个地方我
{$IFDEF ADO}
FDatabase : TADODatabase;
{$ELSE}
FDatabase : TODBCDatabase;
{$ENDIF}
原因是,对于各种遗留应用程序,将使用一种或另一种类型的数据库连接和一组类
然而,在配置新机器时,似乎没有考虑我们的条件。在项目设置中,它说“ADO;DEBUG”,但它用odbc类型编译上述代码
奇怪的是它并不一致。作为同一项目的一部分构建的两个不同单元使用单独的设置。换句话说,在一个地方我们的条件是可见的,在另一个地方它不是
编译错误的文件没有任何{$unde或类似的指令,也不包含任何文件
我错过了什么
解决了(呃):对,德尔福只是被愚弄了,或者诸如此类
我们发现:
好吧,正如预期的那样。不过我们仍然必须使用Delphi。可能是一个单元实际上没有重新编译。请检查以下内容:
- .pas文件是否包含在项目中
- 搜索路径中是否有另一个同名文件(.pas或.dcu)?IDE可能会看到与编译器不同的文件
- 文件是否已编译?比较.pas和.dcu文件的时间戳
- 是否为其他平台编译?除非平台为“AnyCPU”,否则不会传递某些编译器选项
每当遇到这样的问题时,我都会强制删除项目和组件文件夹中的每个.dcu文件,以防“全部编译”无法删除所有过时的.dcu。以下重新编译要么解决了问题,要么显示是否使用了任何错误的.dcu。您应该始终进行“全部编译”当您更改这些条件时。我们会这样做,这显然不是问题所在,请参阅我更新的问题。文件已编译,因为我们可以在两部分中插入不可编译的代码,其中一部分将导致编译失败,但请参阅我更新的问题。