Delphi 2007 和 {$IFDEF...} 指令,无法看到我们的条件

标签 delphi delphi-2007 conditional-compilation

我们的代码库中的组件文件中有以下内容:

{$IFDEF ADO}
FDatabase : TADODatabase;
{$ELSE}
FDatabase : TODBCDatabase;
{$ENDIF}

原因是,对于各种遗留应用程序,将使用一种或另一种类型的数据库连接和一组类。

但是,在配置新机器时,似乎我们的条件没有被考虑在内。在项目设置中,它显示“ADO;DEBUG”,但它却使用 odbc 类型编译上述代码。

奇怪的是它并不一致。作为同一项目的一部分构建的两个不同的单元使用单独的设置。换句话说,在一个地方我们的条件是可见的,而在另一个地方则不可见。

编译错误的文件没有任何{$UNDEF或类似指令,也不包含任何文件。

我在这里缺少什么?

已解决(呃):是的,Delphi 只是很愚蠢,或者诸如此类。

我们发现了这些:

两者都提到了“Platform=BNB”设置。通过启用诊断输出,我们可以看到确切的值。所以我们尝试根据文章重写它,但不走运,仍然是 BNB。然后我们进入项目设置,结果发现它也可以在那里被覆盖,所以我们也这样做了,但仍然没有运气。

事实证明,Delphi 安装程序或其他什么在操作系统级别添加了一个“Platform=BNB”环境变量,将其删除,重新启动 Delphi,一切都很好。

嗯,这也是可以预料的。但我们仍然必须使用 Delphi。

最佳答案

当您更改这些条件时,您应该始终进行“构建全部”。

关于Delphi 2007 和 {$IFDEF...} 指令,无法看到我们的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1277309/

相关文章:

delphi - 如何在delphi中并行编写一个for-down-to循环,在列表上事件,删除项目?

delphi - 将文件拖放到 Delphi 表单中不起作用

delphi - int64 上的 SHR 未返回预期结果

delphi - 优化Delphi中包含的文件和使用

Delphi 2010 宽函数与字符串函数

wix - 为什么我的 ifndef 部分不起作用?

Delphi 字典释放

delphi - 从EXE的EXE执行EXE

c++ - 防止同一个宏在多个翻译单元中有不同的定义

c# - 根据条件编译符号更改exe的名称