【问题标题】:Identifiers for Delphi's $WARN compiler directiveDelphi 的 $WARN 编译器指令的标识符
【发布时间】:2010-09-27 11:13:31
【问题描述】:

Delphi 有一个 $WARN 编译器指令,允许选择性地启用或禁用特定警告。 Delphi 2009 帮助文件描述了语法:

{$WARN identifier ON|OFF}

但它只列出了 6 个警告的标识符。

我想要一份所有警告标识符的完整列表。特别是,我想知道 Delphi 2009 中隐式字符串强制转换警告 W1057 和 W1058 的标识符。

我设法猜到了隐式 Ansi->Unicode 转换 (W1057):

{$WARN IMPLICIT_STRING_CAST OFF}

谷歌搜索找到了另一个:

{$WARN IMPLICIT_STRING_CAST_LOSS OFF}

虽然这解决了我的迫切需求,但我仍然想知道警告标识符的完整列表。应该记录此类内容。

【问题讨论】:

    标签: delphi warnings


    【解决方案1】:

    Darian 认为 DCCStrs.pas 列出了 Delphi 编译器使用的标识符的权利。我没有想到要搜索源代码,因为 Delphi 没有将源代码包含在其编译器中。

    我已经从该文件中提取了提示和警告的标识符:

    • {$WARN ASG_TO_TYPED_CONST OFF}
    • {$WARN BAD_GLOBAL_SYMBOL OFF}
    • {$WARN BOUNDS_ERROR OFF}
    • {$WARN CASE_LABEL_RANGE OFF}
    • {$WARN COMBINING_SIGNED_UNSIGNED OFF}
    • {$WARN COMPARING_SIGNED_UNSIGNED OFF}
    • {$WARN COMPARISON_FALSE OFF}
    • {$WARN COMPARISON_TRUE OFF}
    • {$WARN CONSTRUCTING_ABSTRACT OFF}
    • {$WARN CVT_ACHAR_TO_WCHAR OFF}
    • {$WARN CVT_NARROWING_STRING_LOST OFF}
    • {$WARN CVT_WCHAR_TO_ACHAR OFF}
    • {$WARN CVT_WIDENING_STRING_LOST OFF}
    • {$WARN DUPLICATE_CTOR_DTOR OFF}
    • {$WARN DUPLICATES_IGNORED OFF}
    • {$WARN EXPLICIT_STRING_CAST OFF}
    • {$WARN EXPLICIT_STRING_CAST_LOSS OFF}
    • {$WARN FILE_OPEN OFF}
    • {$WARN FILE_OPEN_UNITSRC OFF}
    • {$WARN FOR_LOOP_VAR_UNDEF OFF}
    • {$WARN FOR_LOOP_VAR_VARPAR OFF}
    • {$WARN FOR_VARIABLE OFF}
    • {$WARN GARBAGE OFF}
    • {$WARN HIDDEN_VIRTUAL OFF}
    • {$WARN HIDING_MEMBER OFF}
    • {$WARN HPPEMIT_IGNORED OFF}
    • {$WARN HRESULT_COMPAT OFF}
    • {$WARN IMAGEBASE_MULTIPLE OFF}
    • {$WARN IMPLICIT_IMPORT OFF}
    • {$WARN IMPLICIT_STRING_CAST OFF}
    • {$WARN IMPLICIT_STRING_CAST_LOSS OFF}
    • {$WARN IMPLICIT_VARIANTS OFF}
    • {$WARN INVALID_DIRECTIVE OFF}
    • {$WARN LOCAL_PINVOKE OFF}
    • {$WARN LOCALE_TO_UNICODE OFF}
    • {$WARN MESSAGE_DIRECTIVE OFF}
    • {$WARN NO_CFG_FILE_FOUND OFF}
    • {$WARN NO_RETVAL OFF}
    • {$WARN OPTION_TRUNCATED OFF}
    • {$WARN PACKAGE_NO_LINK OFF}
    • {$WARN PACKAGED_THREADVAR OFF}
    • {$WARN PRIVATE_PROPACCESSOR OFF}
    • {$WARN RLINK_WARNING OFF}
    • {$WARN STRING_CONST_TRUNCED OFF}
    • {$WARN SUSPICIOUS_TYPECAST OFF}
    • {$WARN SYMBOL_DEPRECATED OFF}
    • {$WARN SYMBOL_EXPERIMENTAL OFF}
    • {$WARN SYMBOL_LIBRARY OFF}
    • {$WARN SYMBOL_PLATFORM OFF}
    • {$WARN TYPED_CONST_VARPAR OFF}
    • {$WARN TYPEINFO_IMPLICITLY_ADDED OFF}
    • {$WARN UNICODE_TO_LOCALE OFF}
    • {$WARN UNIT_DEPRECATED OFF}
    • {$WARN UNIT_EXPERIMENTAL OFF}
    • {$WARN UNIT_INIT_SEQ OFF}
    • {$WARN UNIT_LIBRARY OFF}
    • {$WARN UNIT_NAME_MISMATCH OFF}
    • {$WARN UNIT_PLATFORM OFF}
    • {$WARN UNSAFE_CAST OFF}
    • {$WARN UNSAFE_CODE OFF}
    • {$WARN UNSAFE_TYPE OFF}
    • {$WARN UNSUPPORTED_CONSTRUCT OFF}
    • {$WARN USE_BEFORE_DEF OFF}
    • {$WARN WIDECHAR_REDUCED OFF}
    • {$WARN XML_CREF_NO_RESOLVE OFF}
    • {$WARN XML_EXPECTED_CHARACTER OFF}
    • {$WARN XML_INVALID_NAME OFF}
    • {$WARN XML_INVALID_NAME_START OFF}
    • {$WARN XML_NO_MATCHING_PARM OFF}
    • {$WARN XML_NO_PARM OFF}
    • {$WARN XML_UNKNOWN_ENTITY OFF}
    • {$WARN XML_WHITESPACE_NOT_ALLOWED OFF}
    • {$WARN ZERO_NIL_COMPAT OFF}

    【讨论】:

    • 或在任何单元中按 CTRL-O、O 让 Delphi 进入您当前活动的选项的完整列表。该快捷方式的优点是它很可能在未来的 Delphi 版本中也可以工作(并为您提供新的警告/选项)。
    【解决方案2】:

    我查看了帮助,但没有看到完整的列表...因此查看代码,编译器警告常量似乎都列在: CodeGear\RAD Studio\6.0\sources\toolsapi\DCCStrs.pas

    搜索“Implicit_String_Cast_Loss”,你会看到常量 sIMPLICIT_STRING_CAST_LOSS = 'DCC_IMPLICIT_STRING_CAST_LOSS';

    我会假设其余 DCC_xxx 字符串与相应的 X_true/_false/_error 定义是你所追求的。

    自 Delphi 7 以来,在线帮助一直不太好。

    【讨论】:

    【解决方案3】:

    Delphi 2009 文档中未提及的其他内容:

    $WARN 指令现在除了 ON 和 OFF 之外还有第三个选项 ERROR。所以你可以:

    {$WARN IMPLICIT_STRING_CAST OFF} to disable the warning
    {$WARN IMPLICIT_STRING_CAST ON} to enable warning
    {$WARN IMPLICIT_STRING_CAST ERROR} to turn the warning into an error
    

    【讨论】:

      【解决方案4】:

      这样的事情应该记录在案

      截至今天,标识符及其编译器警告编号的完整列表列在以下文档中:

      http://docwiki.embarcadero.com/RADStudio/en/Warning_messages_(Delphi)

      摘录:

      $WARN 指令中的标识符可以具有以下任何值:

      |警告 |标识符 | |:-----------------:|:----------:| | SYMBOL_DEPRECATED | W1000 | | SYMBOL_LIBRARY | W1001 | | (...) | (...) |

      【讨论】:

        【解决方案5】:

        如果您按 Ctrl+O 两次,它会将所有编译器指令添加到单元顶部,包括所有警告。找到你想要的并删除其余的。

        【讨论】:

          猜你喜欢
          • 2012-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-04
          相关资源
          最近更新 更多