我们的代码库中的组件文件中有以下内容:
{$IFDEF ADO}
FDatabase : TADODatabase;
{$ELSE}
FDatabase : TODBCDatabase;
{$ENDIF}
原因是对于各种遗留应用程序,将使用一种或另一种类型的数据库连接和一组类。
但是,在配置新机器时,似乎没有考虑我们的条件。在项目设置中,它显示“ADO;DEBUG”,但它使用 odbc 类型编译上述代码。
奇怪的是,它并不一致。作为同一项目的一部分构建的两个不同单元使用不同的设置。换句话说,在一个地方我们的条件是可见的,在另一个地方它不是。
编译错误的文件没有任何 {$UNDEF 或类似指令,也不包含任何文件。
我在这里想念什么?
已解决(呃):是的,Delphi 只是被愚弄了,或者诸如此类。
我们发现了这些:
其中都提到了“Platform=BNB”设置。通过启用诊断输出,我们可以看到准确的值。所以我们尝试根据文章覆盖它,没有运气,仍然是 BNB。然后我们进入项目设置,原来它也可以在那里被覆盖,所以我们也这样做了,仍然没有运气。
结果发现 Delphi 安装程序或其他什么东西在操作系统级别添加了一个“Platform=BNB”环境变量,删除它,重新启动 Delphi,一切都很好。
嗯,和可以预料的一样。不过,我们仍然必须使用 Delphi。