Warnmeldungen (Delphi)
Nach oben zu Liste der Delphi-Compiler-Direktiven - Index
|
Typ |
Option |
|
Syntax |
{$WARN Bezeichner ON | OFF | ERROR | DEFAULT} |
|
Vorgabe |
Alle Warnungen sind aktiviert. |
|
Bereich |
Lokal |
Anmerkungen
Die Direktive $WARN ermöglicht eine feinstufige Steuerung einzelner Warnmeldungen.
| Syntax | Effekt |
|---|---|
| {$WARN Bezeichner ON} | Ermöglicht, dass der Compiler die durch den Bezeichner angegebene Warnung anzeigt. |
| {$WARN Bezeichner OFF} | Die angegebene Warnung wird nicht angezeigt. |
| {$WARN Bezeichner ERROR} | Die angegebene Warnung wird als Fehler behandelt. |
| {$WARN Bezeichner DEFAULT} | Verwendet die Standardeinstellungen aus dem Dialogfeld Projektoptionen. |
Diese Warnungen beziehen sich auf Symbole oder Units mit den Hinweisdirektiven platform, deprecated und library.
Der Bezeichner in der Direktive $WARN kann einen der folgenden Werte annehmen:
- BOUNDS_ERROR: Aktiviert oder deaktiviert Warnungen, die erzeugt werden, wenn durchgeführte Umwandlungen wegen des Fehlens von großen vorzeichenlosen Typen in Delphi-Versionen vor Delphi 4 nicht mehr gültig sind.
(Siehe W1012 Konstantenausdruck verletzt untere Grenzen.)
- GARBAGE: Aktiviert oder deaktiviert Warnungen, die erzeugt werden, wenn hinter dem letzten "end." in dem Programm, der Unit, der Bibliothek oder dem Package Text gefunden wird, bei dem es sich nicht um Whitespace handelt.
(Siehe W1011: Text hinter dem abschließenden "END." - wird vom Compiler ignoriert (Delphi).)
- HIDDEN_VIRTUAL: Aktiviert oder deaktiviert Warnungen, die erzeugt werden, wenn ein Nachkomme eine Methode mit demselben Namen wie eine Methode in einem Vorfahren deklariert, und die Methode des Vorfahren virtuell ist, aber die Methode im Nachkommen diese nicht überschreibt.
(Siehe W1010 Methode '%s' verbirgt virtuelle Methode vom Basistyp '%s' (Delphi).)
- HIDING_MEMBER: Aktiviert oder deaktiviert Warnungen, die erzeugt werden, wenn ein Nachkomme eine neue Eigenschaft mit demselben Namen wie eine Eigenschaft in einem Vorfahren deklariert.
(Siehe W1009 Redeklaration von '%s' verbirgt einen Member in der Basisklasse (Delphi).)
- HRESULT_COMPAT: Aktiviert oder deaktiviert Warnungen bezüglich der Verwendung des Typs "Integer", wenn "HRESULT" korrekt wäre.
(Siehe W1008 Integer und HResult werden ausgetauscht.)
- STRING_CONST_TRUNCED: Aktiviert oder deaktiviert Warnungen bezüglich Instanzen, in denen der Compiler ein String-Literal oder einen Konstantenwert einem String-Speicherort zuweist, der zu kurz ist, um den gesamten String aufzunehmen.
(Siehe W1014 Stringkonstante abgeschnitten damit sie in STRING%ld passt (Delphi).)
- SYMBOL_DEPRECATED: Aktiviert oder deaktiviert alle Warnungen bezüglich der Direktive deprecated für Symbole der aktuellen Unit.
(Siehe W1000 Symbol '%s' ist veraltet (Delphi).) - SYMBOL_EXPERIMENTAL: Aktiviert oder deaktiviert alle Warnungen bezüglich der Direktive experimental für Symbole der aktuellen Unit.
(Siehe W1003 Symbol '%s' ist experimental (Delphi).) - SYMBOL_PLATFORM: Aktiviert oder deaktiviert alle Warnungen bezüglich der Direktive platform für Symbole der aktuellen Unit. (
Siehe W1002 Symbol '%s' ist plattformspezifisch (Delphi).)
- SYMBOL_LIBRARY: Aktiviert oder deaktiviert alle Warnungen bezüglich der Direktive library für Symbole der aktuellen Unit.
(Siehe W1001 Symbol '%s' ist bibliotheksspezifisch (Delphi).)
- UNIT_DEPRECATED: Aktiviert oder deaktiviert alle Warnungen bezüglich der Direktive deprecated für eine Unit-Deklaration.
(Siehe W1006 Unit '%s' ist veraltet (Delphi).)
- UNIT_EXPERIMENTAL: Aktiviert oder deaktiviert alle Warnungen bezüglich der Direktive experimental für eine Unit-Deklaration.
(Siehe W1007 Unit '%s' ist experimental (Delphi).)
- UNIT_LIBRARY: Aktiviert oder deaktiviert alle Warnungen bezüglich der Direktive library für Units, in denen die library-Direktive angegeben ist.
(Siehe W1004 Unit '%s' ist bibliotheksspezifisch (Delphi).)
- UNIT_PLATFORM: Aktiviert oder deaktiviert alle Warnungen bezüglich der Direktive platform für Units, in denen die platform-Direktive angegeben ist.
(Siehe W1005 Unit '%s' ist plattformspezifisch (Delphi).)
- ZERO_NIL_COMPAT: Aktiviert oder deaktiviert alle Warnungen bezüglich Instanzen, in denen der Compiler 0 in einen Zeiger mit dem Wert nil konvertiert.
(Siehe W1013 Konstante 0 wurde zu NIL konvertiert (Delphi).)
Mit $WARN können nur die angegebenen Warnungen aktiviert oder deaktiviert werden.
Die mit dem Inline-$WARN aktivierten Warnungen betreffen nur die Unit, in der die Direktive enthalten ist. Die Warnungen werden erst ab der Quelltextzeile ausgegeben, die $WARN enthält.
Die Direktive $WARNINGS steuert auch das Erzeugen von Compiler-Warnungen.
Beispiele
Die folgende $WARN-Direktive führt zu Warnungen über alle Referenzen auf experimentelle Symbole im aktuellen Modul:
{$WARNINGS ON} {$WARN SYMBOL_EXPERIMENTAL ON} procedure Foo; experimental; begin end; begin Foo // Warning: W1003 Symbol 'Foo' is experimental end.
Wenn diese $WARN-Direktive folgendermaßen geändert wird:
{$WARN SYMBOL_EXPERIMENTAL ERROR}würde folgende Compiler-Meldung ausgegeben:
Error: E1003 Symbol 'Foo' is experimental
und dieses Modul würde nicht compiliert werden.
Ein weiteres Beispiel:
{$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)"