DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Syntaxe WLangage / Instructions structurées
  • Paramètre Condition
  • Mot-clé Configuration
  • Mot-clé TypeConfiguration
  • Compilations selon le type des chaînes utilisées (UNICODE ou ANSI)
  • Avantages et limitations
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
L'instruction de compilation <COMPILE SI> permet de compiler ou non un code WLangage selon une condition.
Cette instruction est notamment utilisée pour obtenir simplement un code multi-configuration, sans affichage d'erreurs de compilation (utilisation des mots-clés Configuration et TypeConfiguration).
Différence entre <COMPILE SI> et l'utilisation du code-cible conditionnel :
  • Le code-cible conditionnel compile le code.
    Le code-cible conditionnel est intéressant par exemple pour un composant qui s'exécutera sur des plateformes différentes. Le code est compilé dans toutes les plateformes et il s'exécutera selon la plateforme en cours. Pour plus de détails, consultez Code-cible conditionnel.
  • La compilation conditionnelle (instruction <COMPILE SI>) ne compile pas le code. Elle permet notamment d'éviter l'affichage des erreurs de compilation (utilisation des mots-clés Configuration et TypeConfiguration). Pour plus de détails, consultez le paragraphe Avantages et limitations.
Exemple
<COMPILE SI Configuration <> "Archive Java">
Trace("Pas Archive Java")
<FIN>
<COMPILE SI Configuration <> "Archive Java" ET Configuration = "Exécutable Windows 32 bits">
Trace("Pas Archive Java et Exe32")
<FIN>
<COMPILE SI Configuration = "Linux64" OU TypeConfiguration = Android>
Trace("Linux64")
i est un entier = 12
<SINON>
Trace("Autres")
i est une chaîne = 24
<FIN>


Trace("i = " + i)
// Déclaration d'une constante ayant une valeur dépendante de la configuration
<COMPILE SI Configuration <> "Archive Java">
CONSTANTE
Nom_Constante = 10
FIN
<SINON>
CONSTANTE
Nom_Constante = 20
FIN
<FIN>
Syntaxe

Compilation en fonction d'une condition

<COMPILE SI <Condition>>
... // Code compilé si la condition est vraie
<FIN>

Compilation d'un code ou d'un autre en fonction d'une condition

<COMPILE SI <Condition>>
... // Code compilé si la condition est vraie
<SINON>
... // Code compilé si la condition est fausse
<FIN>

Compilation d'un code ou d'un autre en fonction de plusieurs conditions

<COMPILE SI <Condition1>>
... // Code compilé si la condition <Condition1> est vraie
<SINON SI <Condition2>>
... // Code compilé si la condition <Condition2> est vraie
...
<SINON SI <ConditionN>>
... // Code compilé si la condition <ConditionN> est vraie
<FIN>

Compilation d'un code ou d'un autre en fonction de plusieurs conditions

<COMPILE SI <Condition1>>
... // code compilé si la condition <Condition1> est vraie
<SINON SI <Condition2>>
... // Code compilé si la condition <Condition2> est vraie
...
<SINON SI <ConditionN>>
... // Code compilé si la condition <ConditionN> est vraie
<SINON>
... // Code compilé si toutes les conditions sont fausses
<FIN>

Compilation d'un code selon le type de chaînes utilisées

<COMPILE SI ConfigurationANSI/ConfigurationUNICODE>
... // code compilé si la configuration en cours utilise des chaînes ANSI ou des chaînes UNICODE
<FIN>

Compilation d'un code selon le type de configuration utilisée (32 ou 64 bits)

<COMPILE SI Configuration32/Configuration64>
... // code compilé si la configuration en cours est une configuration 32 bits ou 64 bits
<FIN>
Remarques

Paramètre Condition

La condition doit être évaluable à la compilation : elle peut donc contenir uniquement des éléments littéraux (nombres, chaînes, Vrai, Faux, ...) ou des constantes.
Remarques :
  • Il n'est pas possible d'utiliser une fonction dans la condition.
  • La condition peut utiliser des opérateurs de comparaison.
  • Des mots-clés spécifiques peuvent être utilisés : Configuration et TypeConfiguration.

Mot-clé Configuration

Le mot-clé Configuration renvoie le nom de la configuration en cours. Il est donc possible d'écrire :
<COMPILE SI Configuration = "ConfigTest">
// Code compilé dans la configuration "ConfigTest"
<FIN>

Mot-clé TypeConfiguration

Le mot-clé TypeConfiguration renvoie le type de la configuration en cours. Il est donc possible d'écrire :
<COMPILE SI TypeConfiguration=ApplicationWindows>
// Code compilé dans toutes les configurations Windows
<FIN>
Les types de configuration disponibles sont :
  • ApplicationWindows
  • ApplicationWindows32
  • ApplicationWindows64
  • Site
  • Bibliothèque
  • ComposantExterne
  • Webservice
  • AssemblageDotNet
  • ApplicationDotNet
  • Java
  • ApplicationLinux
  • ApplicationLinux32
  • ApplicationLinux64
  • PatternRAD
  • ServiceWindows
  • ServiceWindows32
  • ServiceWindows64
  • ServiceLinux
  • ServiceLinux32
  • ServiceLinux64
  • Android
  • PlanAction
  • iOS
  • MacOSX
  • UniversalWindowsApp
  • WindowsMobile

Compilations selon le type des chaînes utilisées (UNICODE ou ANSI)

La syntaxe utilisant les mots-clés ConfigurationANSI et ConfigurationUNICODE permet de compiler un code en fonction du type de chaînes utilisé.
Ce paramètre est défini dans la fenêtre de description de la configuration en cours (onglet "Unicode").
Définition du format des chaînes

Avantages et limitations

Si les conditions précisées dans <COMPILE SI> ne sont pas remplies, le code WLangage n'est pas compilé. Le code non compilé est affiché en gris sous l'éditeur de code, avec une mise en forme minimale.
Avantages :
  • Il n'y a pas d'erreur de compilation : les subtilités propres à chaque plateforme (Android, iOS) peuvent être codées sans provoquer d'erreur de compilation dans les autres configurations.
  • Il est possible de déclarer la même variable dans deux parties d'une condition de compilation avec des types différents.
Limitations : Dans le code non compilé :
  • il n'y a aucune assistance à la saisie du code.
  • il n'y a pas de références croisées : pas de Shift+F2, les utilisations des éléments ne sont pas vues, les éléments peuvent apparaître dans les listes des éléments orphelins et du code mort.
  • il n'y a pas d'analyse du code : pas de renommage intelligent.
  • il n'y a pas d'erreur de compilation : si on modifie le prototype d'une procédure, l'erreur ne sera affichée que lors du passage dans une configuration qui autorise la compilation du code.
Version minimum requise
  • Version 21
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale