gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:34:40 25 4
gpt4 key购买 nike

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

{$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'

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

    事实证明,Delphi 安装程序或诸如此类的东西在操作系统级别添加了一个“Platform=BNB”环境变量,删除它,重新启动 Delphi,一切都很好。

    嗯,以及可以预期的。尽管如此,我们仍然必须使用Delphi。

    最佳答案

    可能是一个单元实际上没有重新编译。检查以下内容:

  • .pas 文件是否包含在项目中?
  • 搜索路径中是否有另一个同名文件(.pas 或 .dcu)? IDE 看到的文件可能与编译器不同。
  • 文件真的编译了吗?比较 .pas 和 .dcu 文件的时间戳。
  • 你为另一个平台编译吗?除非平台是“AnyCPU”,否则不会传递某些编译器选项。

  • 每当我遇到这样的问题时,我都会强力删除项目和组件文件夹中的每个 .dcu 文件,以防万一“全部构建”没有删除所有陈旧的 .dcus。以下重新编译要么解决问题,要么揭示是否使用了任何错误的 .dcu。

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

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com