Les directives de compilation permettent de définir le comportement du compilateur lorsqu'il se retrouve face à certains problèmes:
Pour chaque problème il y a trois actions possibles:
Si nous prenons la directive IMPLICIT_STRING_CAST comme exemple:
Cette directive défini la situation où le compilateur se retrouve obligé de convertir une string de type Ansi en string de type Unicode.
Par défaut dans le cas d'un déclenchement de cette directive, le compilateur émet un message d'avertissement.
Voici comment définir un nouveau comportement:
{$WARN IMPLCIT_STRING_CAST OFF} Désactiver l'avertissement
{$WARN IMPLICIT_STRING_CAST ON} Activer l'avertissement
{$WARN IMPLICIT_STRING_CAST ERROR} Changer l'avertissement en erreur de compilation
La liste des directives:
ASG_TO_TYPED_CONST
BAD_GLOBAL_SYMBOL
BOUNDS_ERROR
CASE_LABEL_RANGE
COMBINING_SIGNED_UNSIGNED
COMPARING_SIGNED_UNSIGNED
COMPARISON_FALSE
COMPARISON_TRUE
CONSTRUCTING_ABSTRACT
CVT_ACHAR_TO_WCHAR
CVT_NARROWING_STRING_LOST
CVT_WCHAR_TO_ACHAR
CVT_WIDENING_STRING_LOST
DUPLICATE_CTOR_DTOR
DUPLICATES_IGNORED
EXPLICIT_STRING_CAST
EXPLICIT_STRING_CAST_LOSS
FILE_OPEN
FILE_OPEN_UNITSRC
FOR_LOOP_VAR_UNDEF
FOR_LOOP_VAR_VARPAR
FOR_VARIABLE
GARBAGE
HIDDEN_VIRTUAL
HIDING_MEMBER
HPPEMIT_IGNORED
HRESULT_COMPAT
IMAGEBASE_MULTIPLE
IMPLICIT_IMPORT
IMPLICIT_STRING_CAST
IMPLICIT_STRING_CAST_LOSS
IMPLICIT_VARIANTS
INVALID_DIRECTIVE
LOCAL_PINVOKE
LOCALE_TO_UNICODE
MESSAGE_DIRECTIVE
NO_CFG_FILE_FOUND
NO_RETVAL
OPTION_TRUNCATED
PACKAGE_NO_LINK
PACKAGED_THREADVAR
PRIVATE_PROPACCESSOR
RLINK_WARNING
STRING_CONST_TRUNCED
SUSPICIOUS_TYPECAST
SYMBOL_DEPRECATED
SYMBOL_EXPERIMENTAL
SYMBOL_LIBRARY
SYMBOL_PLATFORM
TYPED_CONST_VARPAR
TYPEINFO_IMPLICITLY_ADDED
UNICODE_TO_LOCALE
UNIT_EXPERIMENTAL
UNIT_INIT_SEQ
UNIT_LIBRARY
UNIT_NAME_MISMATCH
UNIT_PLATFORM
UNSAFE_CAST
UNSAFE_CODE
UNSAFE_TYPE
UNSUPPORTED_CONSTRUCT
USE_BEFORE_DEF
WIDECHAR_REDUCED
XML_CREF_NO_RESOLVE
XML_EXPECTED_CHARACTER
XML_INVALID_NAME
XML_INVALID_NAME_START
XML_NO_MATCHING_PARM
XML_NO_PARM
XML_UNKNOWN_ENTITY
XML_WHITESPACE_NOT_ALLOWED
ZERO_NIL_COMPAT