delphi - 漏洞 : Cannot edit hints/warnings in BPL project options

标签 delphi delphi-xe7

我利用从 Embarcadero 通过电子邮件收到的(限时)升级优惠升级到 Delphi XE7。我喜欢。像这样的好版本每 7 年都会出现 :)

但我有一个问题:我不知道如何消除一些警告。例如'W1011 Text after final END'。 “项目选项”框不同。所有那些可编辑的值都消失了。相反,我有 3 个条目,例如“值来自:调试配置 - 所有平台”。

我在哪里可以配置全局“调试配置 - 所有平台”?

enter image description here

最佳答案

编辑:截图后更新。下面标记为“一般项目”的旧答案,因为它在一般情况下仍然有用,如 EXE、DLL 等。

仅在 XE7 中的 BPL 项目(在 XE6- 中正常,在 XE8+ 中修复)

更新:这个错误已经marked as resolved in XE8 .

我在您的屏幕截图中看到您打开了一个 BPL 项目(顺便说一句,您在 XE7 中使用 XE2 Graphics32 包 - 最好使用专用的 XE7 包。)

我可以验证 BPL 不会像其他项目类型那样显示警告和提示列表。EXE、DLL 等列出它们,如下所示。我认为这是 a bug: RSP-8980.它是 XE6 的回归; XE6 按预期显示提示和警告,但 XE7 没有。

手动编辑 DPROJ

David Heffernan 指出这些选项应该在项目中,即使 UI 不允许您编辑它们。一种方法是创建另一个项目(例如 DLL),根据需要设置选项,然后手动编辑 BPL 的项目文件 (.dproj) 以包含它们,从正确设置的其他项目复制。

这很复杂 - 它是 XML,您需要完全正确地获取所有命名配置等 - 但会模仿 UI 为您做的事情。

BPK文件

您可以通过在 .bpk 文件本身中指定它们来解决此问题。您可以在 GR32 .bpk 文件中看到许多项目选项:

A new BPL project's BPK file

BPK 类似于 DPR 文件,仅适用于 BPL。要查找此文件,请右键单击 BPL 项目并单击“查看源代码”。

如果你添加行

{$WARN GARBAGE OFF}

并重建(不是重新编译,而是构建)项目,您将看到之前显示警告 W1011 的所有单元现在不再显示。

当您必须按名称而不是编号来引用它们时,您如何知道特定警告的名称?在 this handy blog post 上查找它们.

我添加了两个质量错误报告:

一般项目

一个项目有多个targets (例如 Windows 32 位调试、与 OSX 32 位发布等)和设置可以为每个设置。此外,这些设置是可继承的,因此您可以为所有调试目标、所有发布目标等设置设置。

通常,您应该在尽可能高的级别设置设置,并在最具体的级别覆盖。

以此为背景,要更改 W1011 Text after final end,请打开“项目选项”并导航到“提示和警告”部分。在顶部的“目标”下拉组合中,选择要进行更改的最高级别目标(例如,在此屏幕截图中我选择了“调试配置 - 所有平台”,这意味着 Win32 调试和 Win64 调试并且任何其他平台调试将使用此设置和此处指定的值。)

展开“输出警告”树并忽略暗红色的“来自 Foo 的值”节点,这些节点指的是继承的值 - 它不可能在此处使用并且对其他设置更有意义。从你的问题来看,这些是我认为让你感到困惑的。相反,向下滚动直到看到“最终结束后的文本”(警告按字母顺序排序。)

Project Options, with a specific warning selection

选择它,然后选择您感兴趣的选项。

避免混淆的关键事项:

  • 选项是继承的
  • 使用顶部的组合框选择应用设置的级别
  • 覆盖最具体的可能
  • 尽可能设置为最通用
  • 设置值时,忽略深红色“Value from Foo”继承节点;只需向下滚动或展开,然后设置您想要的设置

关于delphi - 漏洞 : Cannot edit hints/warnings in BPL project options,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27805151/

相关文章:

performance - 具有许多单元的 Delphi 项目需要大量运行

multithreading - 从线程内执行 OpenGL 绘图

windows - Delphi 中的跨应用程序拖放

delphi - 阻止 Delphi 自动错误地添加单位

Android:未声明标识符

android - 在 Delphi XE7 中的 Android 上第二次打开表单时出现访问冲突

c# - 是否可以使用 Bind 构建我自己的 DDNS?

mysql - Delphi dbexpress MySQL查询格式

javascript - 由于错误 80020101 (v1.5.3),GMLib 无法完成操作

delphi - 如何将值列表作为 TOraQuery 的参数传递?