我们的代码库中有以下内容:组件文件:
{$IFDEF ADO}
FDatabase : TADODatabase;
{$ELSE}
FDatabase : TODBCDatabase;
{$ENDIF}
原因是对于各种遗留应用程序,将使用一种或另一种类型的数据库连接和一组类。
但是,在配置新机器时,我们的条件似乎没有被考虑在内。在项目设置中,它显示“ADO; DEBUG”,但它使用odbc类型编译上述代码。
奇怪的是它并不一致。作为同一项目的一部分构建的两个不同单元使用单独的设置。换句话说,在一个地方我们的条件是可见的,而另一个地方则不是。
编译错误的文件没有任何{$ UNDEF或类似的指令,也不包含任何文件。
我在这里缺少什么?
解决了(呃):对,德尔福只是愚蠢或其他什么。
我们发现了这些:
两者都提到“Platform = BNB”设置。通过启用诊断输出,我们可以看到确切的值。因此,我们试图根据文章覆盖它,没有运气,仍然是BNB。然后我们去项目设置,原来它也可以覆盖那里,所以我们也这样做,仍然没有运气。
原来Delphi安装程序,或者诸如此类,在操作系统级别添加了一个“Platform = BNB”环境变量,删除它,重新启动Delphi,一切都很顺利。
嗯,以及可以预期的。我们仍然需要使用Delphi。
答案 0 :(得分:2)
当你改变这些条件时,你应该总是“全部建立”。
答案 1 :(得分:1)
实际上可能没有重新编译一个单元。请检查以下内容:
每当我遇到这样的问题时,我强行删除项目和组件文件夹中的每个.dcu文件,以防万一“Build all”没有删除所有陈旧的.dcus。以下重新编译要么解决问题,要么显示是否使用了错误的.dcu。