Compilation conditionnelle (Delphi)
Remonter à Liste des directives de compilation Delphi - Index
La compilation conditionnelle est basée sur l'existence et l'évaluation de constantes, l'état des commutateurs du compilateur et la définition des symboles conditionnels.
Les symboles conditionnels fonctionnent comme des variables booléennes : Ils sont soit vrais (définis) soit faux (non définis). Tout symbole conditionnel valide est considéré comme faux jusqu'à ce qu'il soit défini. La directive $DEFINE affecte la valeur True au un symbole spécifié et la directive $UNDEF lui affecte la valeur False. Vous pouvez également définir un symbole conditionnel en utilisant la bascule -D avec le compilateur en ligne de commande ou en ajoutant le symbole à la boîte définitions conditionnelles de la page Répertoires/Conditions du dialogue Projet|Options.
Les directives conditionnelles $IFDEF, $IFNDEF, $IF, $ELSEIF, $ELSE, $ENDIF et $IFEND vous permettent de compiler ou de supprimer du code selon l'état d'un symbole conditionnel. $IF et $ELSEIF vous permettent de baser la compilation conditionnelle sur des identificateurs Delphi déclarés. $IFOPT compile ou supprime du code selon que le commutateur de compilation spécifié est activé ou non.
Par exemple,
{$DEFINE DEBUG}
{$IFDEF DEBUG}
Writeln('Debug est activé.'); // ce code s'exécute
{$ELSE}
Writeln('Debug est désactivé.'); // ce code ne s'exécute pas
{$ENDIF}
{$UNDEF DEBUG}
{$IFNDEF DEBUG}
Writeln('Debug est désactivé.'); // ce code s'exécute
{$ENDIF}
Les constructions de compilation conditionnelle peuvent être imbriqués sur 32 niveaux. Pour tout {$IFxxx}, le {$ENDIF} ou {$IFEND} correspondant doit être trouvé dans le même fichier source.
Les symboles conditionnels doivent commencer par une lettre, suivie par n'importe quelle combinaison de lettres, chiffres et caractères soulignés ; ils peuvent avoir n'importe quelle longueur, mais seuls les 255 premiers caractères sont significatifs. Les symboles conditionnels suivants sont définis :
VER<nnn> Toujours défini. Indique le numéro de version du compilateur Delphi. (Chaque version du compilateur possède son symbole prédéfini. Par exemple, pour la version 18.0 du compilateur, VER180 est défini.)
MSWINDOWS Indique que le système d'exploitation est Windows. Utilisez MSWINDOWS pour tester toutes les variantes de la plate-forme Windows, au lieu de WIN32.
WIN32 Indique que le système d'exploitation est Win32 API. Utilisez WIN32 pour distinguer les diverses plates-formes Windows, comme Windows 32 et 64 bits. En général, ne limitez pas le code à WIN32 sauf si vous êtes certain qu'il ne fonctionnera pas en WIN64. Utilisez à la place MSWINDOWS.
CPU386 Indique que le CPU est un Intel 386 ou un microprocesseur supérieur.
CONSOLE Définit si une application est compilée pour une console.
CONDITIONALEXPRESSIONS Teste l'utilisation des directives $IF.
Remarque : Les symboles conditionnels ne sont pas des identificateurs Delphi et ne peuvent pas être référencés dans du code programme réel. De même, les identificateurs Delphi ne peuvent pas être référencés dans des directives conditionnelles autres que $IF et $ELSEIF.
Remarque : Les définitions conditionnelles sont uniquement évaluées lorsque le code source est recompilé. Si vous modifiez l'état d'un symbole conditionnel et reconstruisez ensuite le projet, le code source des unités non modifiées risque de ne pas être recompilé. Utilisez Projet|Construire tous les projets pour être sûr que tout votre projet reflète l'état en cours des symboles conditionnels.