我们的代码库中的组件文件中有以下内容:
{$IFDEF ADO}
FDatabase : TADODatabase;
{$ELSE}
FDatabase : TODBCDatabase;
{$ENDIF}
原因是,对于各种遗留应用程序,将使用一种或另一种类型的数据库连接和一组类。
但是,在配置新机器时,似乎我们的条件没有被考虑在内。在项目设置中,它显示“ADO;DEBUG”,但它却使用 odbc 类型编译上述代码。
奇怪的是它并不一致。作为同一项目的一部分构建的两个不同的单元使用单独的设置。换句话说,在一个地方我们的条件是可见的,而在另一个地方则不可见。
编译错误的文件没有任何{$UNDEF或类似指令,也不包含任何文件。
我在这里缺少什么?
已解决(呃):是的,Delphi 只是很愚蠢,或者诸如此类。
我们发现了这些:
- I get “F1026 File not found”, OR some compiler options are not passed to the compiler from the IDE.
- Configuration='Debug' Platform='BNB'
两者都提到了“Platform=BNB”设置。通过启用诊断输出,我们可以看到确切的值。所以我们尝试根据文章重写它,但不走运,仍然是 BNB。然后我们进入项目设置,结果发现它也可以在那里被覆盖,所以我们也这样做了,但仍然没有运气。
事实证明,Delphi 安装程序或其他什么在操作系统级别添加了一个“Platform=BNB”环境变量,将其删除,重新启动 Delphi,一切都很好。
嗯,这也是可以预料的。但我们仍然必须使用 Delphi。
最佳答案
当您更改这些条件时,您应该始终进行“构建全部”。
关于Delphi 2007 和 {$IFDEF...} 指令,无法看到我们的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1277309/