Display Preferences Warning messages (Delphi) Go Up to Delphi Compiler Directives (List) Index
Type Switch Syntax {$WARN identifier ON | OFF | ERROR | DEFAULT} Default All warnings are enabled Scope Local
Remarks The $WARN directive gives you fine-grained control over individual warning messages. Syntax Effect {$WARN identifier ON} Allows the compiler to display the warning specified by the identifier {$WARN identifier OFF} The specified warning is not displayed {$WARN identifier ERROR} The specified warning is treated as error {$WARN identifier DEFAULT} Uses the default settings from the Project Options dialog box. These warnings relate to symbols or units that use the hint directives, platform, deprecated, and library. The identifier in the $WARN directive can have any of the following values: BOUNDS_ERROR: Turns on or off warnings produced if a conversion is made that is no longer legal, owing to the lack of large unsigned types in Delphi versions prior to Delphi 4. (See W1012 Constant expression violates subrange bounds.) GARBAGE: Turns on or off warnings produced when the presence of non-whitespace text is detected past the end of the final 'end.' in the program, unit, library or package (See W1011 Text after final 'END.' - ignored by compiler (Delphi).) HIDDEN_VIRTUAL: Turns on or off warnings produced when a descendant declares a method of the same name as a method in an ancestor, and the ancestor method is virtual, but the descendant's method is not an override. (See W1010 Method '%s' hides virtual method of base type '%s' (Delphi).) HIDING_MEMBER: Turns on or off warnings produced when a descendant declares a new property of the same name as a property in an ancestor. (See W1009 Redeclaration of '%s' hides a member in the base class (Delphi).) HRESULT_COMPAT: Turns on or off warnings about using the type 'Integer' where 'HRESULT' is correct. (See W1008 Integer and HRESULT interchanged.) STRING_CONST_TRUNCED: Turns on or off all warnings about instances in which the compiler assigns a string literal or a constant value to a short string location that cannot hold the entire string. (See W1014 String constant truncated to fit STRING%ld (Delphi).) SYMBOL_DEPRECATED: Turns on or off all warnings about the deprecated directive on symbols in the current unit. (See W1000 Symbol '%s' is deprecated (Delphi).) SYMBOL_EXPERIMENTAL: Turns on or off all warnings about the experimental directive on symbols in the current unit. (See W1003 Symbol '%s' is experimental (Delphi).) SYMBOL_PLATFORM: Turns on or off all warnings about the platform directive on symbols in the current unit. ( See W1002 Symbol '%s' is specific to a platform (Delphi).) SYMBOL_LIBRARY: Turns on or off all warnings about the library directive on symbols in the current unit. (See W1001 Symbol '%s' is specific to a library (Delphi).) UNIT_DEPRECATED: Turns on or off all warnings about the deprecated directive applied to a unit declaration. (See W1006 Unit '%s' is deprecated (Delphi).) UNIT_EXPERIMENTAL: Turns on or off all warnings about the experimental directive applied to a unit declaration. (See W1007 Unit '%s' is experimental (Delphi).) UNIT_LIBRARY: Turns on or off all warnings about the library directive in units where the library directive is specified. (See W1004 Unit '%s' is specific to a library (Delphi).) UNIT_PLATFORM: Turns on or off all warnings about the platform directive in units where the platform directive is specified. (See W1005 Unit '%s' is specific to a platform (Delphi).) ZERO_NIL_COMPAT: Turns on or off all warnings about instances in which the compiler converts 0 to a pointer with the value nil. (See W1013 Constant 0 converted to NIL (Delphi).)
The only warnings that can be turned on/off using $WARN are the ones listed above. The warnings set by the inline $WARN directive are carried for the compilation unit in which the directive appears, after which it reverts to the previous state. The warnings set by a $WARN directive take effect from that point on in the file. The $WARNINGS directive also controls the generation of compiler warnings.
Examples The following $WARN directive results in warnings about all references to experimental symbols in the current module: {$WARNINGS ON} {$WARN SYMBOL_EXPERIMENTAL ON} procedure Foo; experimental; begin end; begin Foo // Warning: W1003 Symbol 'Foo' is experimental end. If that $WARN directive were changed to: {$WARN SYMBOL_EXPERIMENTAL ERROR} then the compiler message would change to: Error: E1003 Symbol 'Foo' is experimental and this module would not be compiled.
Another example: {$WARN WIDECHAR_REDUCED OFF} if c in ['a', 'b'] then // ... {$WARN WIDECHAR_REDUCED DEFAULT} Possible warnings: • ID_DEPRECATED, //"x1000 Symbol '%s' is deprecated%s" • ID_LIBRARY, //"x1001 Symbol '%s' is specific to a library" • ID_PLATFORM, //"x1002 Symbol '%s' is specific to a platform" • ID_EXPERIMENTAL, //"x1003 Symbol '%s' is experimental" • UNIT_LIBRARY, //"x1004 Unit '%s' is specific to a library" • UNIT_PLATFORM, //"x1005 Unit '%s' is specific to a platform" • UNIT_DEPRECATED, //"x1006 Unit '%s' is deprecated" • UNIT_EXPERIMENTAL, //"x1007 Unit '%s' is experimental" • HRESULT_COMPAT, //"x1008 Integer and HRESULT interchanged" • HIDING_MEMBER, //"x1009 Redeclaration of '%s' hides a member in the base class" • HIDDEN_VIRTUAL, //"x1010 Method '%s' hides virtual method of base type '%s'" • GARBAGE, //"x1011 Text after final 'END.' - ignored by compiler" • BOUNDS_ERROR, //"x1012 Constant expression violates subrange bounds" • ZERO_NIL_COMPAT, //"x1013 Constant 0 converted to NIL" • STRING_CONST_TRUNCED, //"x1014 String constant truncated to fit STRING[%ld]" • FOR_LOOP_VAR_VARPAR, //"x1015 FOR-Loop variable '%s' cannot be passed as var parameter" • TYPED_CONST_VARPAR, //"x1016 Typed constant '%s' passed as var parameter" • ASG_TO_TYPED_CONST, //"x1017 Assignment to typed constant '%s'" • CASE_LABEL_RANGE, //"x1018 Case label outside of range of case expression" • FOR_VARIABLE, //"x1019 For loop control variable must be simple local variable" • CONSTRUCTING_ABSTRACT, //"x1020 Constructing instance of '%s' containing abstract method '%s.%s'" • COMPARISON_FALSE, //"x1021 Comparison always evaluates to False" • COMPARISON_TRUE, //"x1022 Comparison always evaluates to True" • COMPARING_SIGNED_UNSIGNED, //"x1023 Comparing signed and unsigned types - widened both operands" • COMBINING_SIGNED_UNSIGNED, //"x1024 Combining signed and unsigned types - widened both operands" • UNSUPPORTED_CONSTRUCT, //"x1025 Unsupported language feature: '%s'" • FILE_OPEN, //"x1026 File not found: '%s'" • FILE_OPEN_UNITSRC, //"F1027 Unit not found: '%s' or binary equivalents (%s)" • BAD_GLOBAL_SYMBOL, //"x1028 Bad global symbol definition: '%s' in object file '%s'" • DUPLICATE_CTOR_DTOR, //"x1029 Duplicate %s '%s' with identical parameters will be inacessible from C++" • INVALID_DIRECTIVE, //"x1030 Invalid compiler directive: '%s'" • PACKAGE_NO_LINK, //"x1031 Package '%s' will not be written to disk because -J option is enabled" • PACKAGED_THREADVAR, //"x1032 Exported package threadvar '%s.%s' cannot be used outside of this package" • IMPLICIT_IMPORT, //"x1033 Unit '%s' implicitly imported into package '%s'" • HPPEMIT_IGNORED, //"x1034 $HPPEMIT '%s' ignored" • NO_RETVAL, //"x1035 Return value of function '%s' might be undefined" • USE_BEFORE_DEF, //"x1036 Variable '%s' might not have been initialized" • FOR_LOOP_VAR_UNDEF, //"x1037 FOR-Loop variable '%s' may be undefined after loop" • UNIT_NAME_MISMATCH, //"E1038 Unit identifier '%s' does not match file name" • NO_CFG_FILE_FOUND, //"x1039 No configuration files found" • IMPLICIT_VARIANTS, //"x1040 Implicit use of Variants unit" • UNICODE_TO_LOCALE, //"x1041 Error converting Unicode char to locale charset. String truncated. Is your LANG environment variable set correctly?" • LOCALE_TO_UNICODE, //"x1042 Error converting locale string '%s' to Unicode. String truncated. Is your LANG environment variable set correctly?" • IMAGEBASE_MULTIPLE, //"x1043 Imagebase $%X is not a multiple of 64k. Rounding down to $%X" • SUSPICIOUS_TYPECAST, //"x1044 Suspicious typecast of %s to %s" • PRIVATE_PROPACCESSOR, //"x1045 Property declaration references ancestor private '%s.%s'" • UNSAFE_TYPE, //"x1046 Unsafe type '%s%s%s'" • UNSAFE_CODE, //"x1047 Unsafe code '%s'" • UNSAFE_CAST, //"x1048 Unsafe typecast of '%s' to '%s'" • OPTION_TRUNCATED, //"x1049 value '%s' for option %s was truncated" • WIDECHAR_REDUCED, //"x1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit." • DUPLICATES_IGNORED, //"x1051 Duplicate symbol names in namespace. Using '%s.%s' found in %s. Ignoring duplicate in %s" • UNIT_INIT_SEQ, //"x1052 Can't find System.Runtime.CompilerServices.RunClassConstructor. Unit initialization order will not follow uses clause order" • LOCAL_PINVOKE, //"x1053 Local PInvoke code has not been made because external routine '%s' in package '%s' is defined using package local types in its custom attributes" // (.Net only) • MESSAGE_DIRECTIVE, //"x1054 %s" • TYPEINFO_IMPLICITLY_ADDED, //"x1055 PUBLISHED caused RTTI ($M+) to be added to type '%s'" • RLINK_WARNING, //"x1056 %s%s%s" • IMPLICIT_STRING_CAST, //"x1057 Implicit string cast from '%s' to '%s'" • IMPLICIT_STRING_CAST_LOSS, //"x1058 Implicit string cast with potential data loss from '%s' to '%s'" • EXPLICIT_STRING_CAST, //"x1059 Explicit string cast from '%s' to '%s'" • EXPLICIT_STRING_CAST_LOSS, //"x1060 Explicit string cast with potential data loss from '%s' to '%s'" • CVT_WCHAR_TO_ACHAR, //"x1061 Narrowing given WideChar constant (#$%04X) to AnsiChar lost information" • CVT_NARROWING_STRING_LOST, //"x1062 Narrowing given wide string constant lost information" • CVT_ACHAR_TO_WCHAR, //"x1063 Widening given AnsiChar constant (#$%02X) to WideChar lost information" • CVT_WIDENING_STRING_LOST, //"x1064 Widening given AnsiString constant lost information" • NON_PORTABLE_TYPECAST, //"x1065 Typecast of %s to %s is non-portable; code may run differently on 32bit and 64bit platforms" • LOST_EXT80_PRECISION, //"x1066 Lost Extended floating point precision. Reduced to Double" • LNKDFM_NOTFOUND, //"x1067 Unable to load DLL %s" • IMMUTABLE_STRINGS, //"x1068 Modifying strings in place may not be supported in the future" • MOBILE_DELPHI, //"x1069 %s" • UNSAFE_VOID_POINTER, //"x1070 Use of untype pointer can disrupt instance reference counts" • XML_WHITESPACE_NOT_ALLOWED, //"x1201 XML comment on '%s' has badly formed XML -- 'Whitespace is not allowed at this location.'" • XML_UNKNOWN_ENTITY, //"x1202 XML comment on '%s' has badly formed XML -- 'Reference to undefined entity '%s'.'" • XML_INVALID_NAME_START, //"x1203 XML comment on '%s' has badly formed XML -- 'A name was started with an invalid character.'" • XML_INVALID_NAME, //"x1204 XML comment on '%s' has badly formed XML -- 'A name contained an invalid character.'" • XML_EXPECTED_CHARACTER, //"x1205 XML comment on '%s' has badly formed XML -- 'The character '%c' was expected.'" • XML_CREF_NO_RESOLVE, //"x1206 XML comment on '%s' has cref attribute '%s' that could not be resolved" • XML_NO_PARM, //"x1207 XML comment on '%s' has a param tag for '%s', but there is no parameter by that name" • XML_NO_MATCHING_PARM, //"x1208 Parameter '%s' has no matching param tag in the XML comment for '%s' (but other parameters do)" See Also
Warnings (Delphi) ($WARNINGS) Declarations and Statements Directives, in Fundamental Syntactic Elements Category: Delphi Page Discussion View source History Log in / create account Search RAD Studio XE4 XE4 Examples and Samples XE4 Libraries Main Page - XE4 Topics Wiki What's New in XE4 Tutorials FireMonkey Application Platform Cross-Platform Applications Getting Started Steps in Developing a Project Key Application Types Win32 Developer's Guide Modeling Tools IDE Reference and Command-Line Utilities Delphi Reference C++ Reference Subject Index HTML5 Builder Previous Versions XE3 Topics XE2 Topics XE Topics 2010 Topics In Other Languages Deutsch Français 日本語 Assistance Known Problems and Recent Fixes Random Page Recent changes Help Toolbox What links here Related changes Special pages Printable version Permanent link This page was last modified on 26 February 2013, at 11:16. Privacy policy About RAD Studio Disclaimers Help Feedback
|
请发表评论