Идентификаторы для директивы компилятора $ WARN Delphi

Delphi имеет директиву компилятора $ WARN, которая позволяет выборочно включать или отключать определенные предупреждения. Файл справки Delphi 2009 описывает синтаксис:

{$WARN identifier ON|OFF}

Но это только перечисляет идентификаторы для 6 предупреждений.

Я хотел бы иметь полный список всех идентификаторов предупреждений. В частности, я хочу знать идентификаторы для неявных предупреждений о приведении строк W1057 и W1058 в Delphi 2009.

Мне удалось угадать один для неявных приведений Ansi-> Unicode (W1057):

{$WARN IMPLICIT_STRING_CAST OFF}

Погуглив для этого нашел меня другой:

{$WARN IMPLICIT_STRING_CAST_LOSS OFF}

Хотя это решает мою насущную потребность, я все же хотел бы знать полный список идентификаторов предупреждений. Вещи как это должны быть документированы.

Ответы на вопрос(4)

что 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}
 Мסž30 нояб. 2010 г., 06:16
Или в любом блоке CTRL-O, O, чтобы Delphi отображался в полном списке активных вариантов. Преимущество этого ярлыка в том, что он, вероятно, будет работать и в будущих версиях Delphi (и даст вам новые предупреждения / опции).
Решение Вопроса

осматривая код, кажется, что все константы предупреждения компилятора перечислены в: 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.

На сегодняшний день полный список идентификаторов и их номеров предупреждений компилятора перечислены в документации по адресу:

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

Выдержка:

Идентификатор в директиве $ WARN может иметь любое из следующих значений:

|      Warning      | Identifier |
|:-----------------:|:----------:|
| SYMBOL_DEPRECATED | W1000      |
| SYMBOL_LIBRARY    | W1001      |
| (...)             | (...)      |

Директива $ WARN теперь имеет третью опцию ERROR в дополнение к ON и OFF. Таким образом, вы можете иметь:

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

Ваш ответ на вопрос