В Delphi есть директива компилятора $WARN, которая позволяет выборочно включать или отключать определенные предупреждения. Файл справки Delphi 2009 описывает синтаксис:
{$WARN identifier ON|OFF}
Но он отображает только идентификаторы для 6 предупреждений.
Я хотел бы иметь полный список всех предупреждающих идентификаторов. В частности, я хочу знать идентификаторы для неявных строковых предупреждений о переносе W1057 и W1058 в Delphi 2009.
Мне удалось угадать одно для неявных Ansi- > Unicode cast (W1057):
{$WARN IMPLICIT_STRING_CAST OFF}
Google для этого нашел меня другой:
{$WARN IMPLICIT_STRING_CAST_LOSS OFF}
Хотя это решает мою непосредственную потребность, мне все равно хотелось бы узнать полный список предупреждающих идентификаторов. Такие вещи должны быть задокументированы.
Я просмотрел справку и не увидел полный список... так что, ковыряясь в коде, кажется, что все константы предупреждения компилятора перечислены в: 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.
Дарьян прав, что 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}
Что-то еще не упоминается в документации Delphi 2009:
В директиве $WARN теперь есть опция ОШИБКИ 3-й опции в дополнение к ВКЛ и ВЫКЛ. Таким образом, вы можете:
{$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