Qu'est ce que la compilation conditionnelle ?
La compilation conditionnelle permet d'exclure (ou d'inclure) à la compilation certaines parties de votre code source en fonction d'une condition. Cette méthode de programmation est à comparer aux instructions préprocesseur en C.
A quoi sert la compilation conditionnelle ?
La compilation conditionnelle est pratique dans plusieurs cas :
- Votre application peut tourner sur différentes versions de Windows mais vous souhaitez compiler un code source différent pour chaque version
- Votre application est en phase de création et vous ne souhaitez pas laisser les instructions de débogage dans la version finale
- Vous voulez exclure certaines fonctionnalités de l'application de l'exécutable compilé (dans le cas ou vous avez, par exemple, une version payante complète et une version gratuite mais limitée en fonctionnalités)
L'intérêt d'exclure certaines parties du code peut être :
- Allègement de l'exécutable final (il ne reste pas de lignes de code qui ne seront jamais utilisées)
- Simplification de la gestion de plusieurs versions du programme (exemple, pour compiler une version payante complète et une version gratuite allégée en fonctionnalités, on ne modifie qu'une seule constante dans tout le projet)
- Ne pas enlever à la main toutes les traces du débogage (comme MsgBox "Test - variable =" & Cstr(Valeur_test)) du programme tout en ne les incluant pas dans la version finale de l'application
Le code exclu lors de la compilation ne sera pas présent dans le fichier exécutable. Tout se passe comme s'il n'existait pas au point de vue du résultat.
Comment se servir de la compilation conditionnelle ?
Généralement, la condition pour inclure dans le code compilé une suite d'instructions est représentée par une constante de compilation conditionnelle.
Il faut donc :
1) Déclarer la constante de compilation conditionnelle
2) Inclure ou non des suites d'instructions en fonction de cette constante
On suit donc le schéma :
Si MA VARIABLE-CONDITION est validée (ou pas) Alors
'Les instructions qui seront inclues à la compilation
Fin si
La condition doit être une booléenne, ou alors une opération de booléennes.
1) Déclaration de la constante
Il existe deux méthodes pour déclarer la constante conditionnelle :
- Déclarer la constante dans le module/form
Syntaxe : #Const ConstName = Expression
Expression étant une constante, ou une combinaison d'opérations sur des constantes avec tous les opérateurs classiques excepté Is .
C'est comme pour une déclaration de constante normale, sauf que l'on rajoute « # » devant. L'inconvénient est que vous ne pouvez pas déclarer de constante publique : elle est donc uniquement valable à l'intérieur du module qui la contient.
- Déclarer la constante dans les propriétés du projet
La constante est alors déclarée publiquement pour tout le projet. Vous ne devez pas taper de code mais ajouter la déclaration dans les propriétés de votre projet.
Faites Menu > Projet > Propriétés de [projet] > Onglet « Créer » > Argument de la compilation conditionnelle
et vous rentrez dans cette textbox vos différentes constantes et leurs valeur en respectant la forme :
VARIABLE1=-1:VARIABLE2=0:VARIABLE3=-1
La valeur -1 correspond bien évidemment à la valeur True .
2) Les instructions conditionnelles
Maintenant que vous avez défini vos constantes conditionnelles, il est temps de s'en servir.
Pour cela, il faudra utiliser les commandes #If , #Then, Else, #ElseIf et # End If . Tout comme pour #Const , les instructions If , Else , ElseIf et End If seront précédées du « # ». L'utilisation est identique aux fonctions sans le « # », à l'exception du fait qu'il n'existe pas de forme mono-ligne pour les instructions conditionnelles (obligation de mettre un retour à la ligne après le #Else et obligation de mettre un #ElseIf ).
Syntaxe :
#If expression Then
statements
[ #ElseIf expression-n Then
[elseifstatements]]
[ #Else
[elsestatements]]
#End If
expression et expression-n étant des constantes de compilation conditionnelle, ou des combinaisons d'opérations sur des constantes de compilation conditionnelle avec tous les opérateurs classiques excepté Is .
Exemples d'utilisation :
« Si nous somme en phase de Debug, alors on affiche les informations de debug, sinon on n'inclut pas ces instructions dans le fichier compilé final »
Ainsi, en suivant ce schéma dans tout le programme et en ne changeant que la valeur de la constante PHASE_DEBUG , on peut compiler soit une application finalisée, soit une application en phase de test. L'avantage est qu'il n'est plus nécessaire de supprimer les lignes de debug de la version en phase de test, mais d'uniquement changer une constante pour ne pas inclure les instructions de debug dans l'exécutable de la version finalisée.
« Si nous sommes en présence d'une version payante de l'application, alors on active certaines fonctions sinon on les désactive »
« Si l'on compile une version française, alors on met les textes en français, sinon on met dans d'autres langues »
On ajoute FRENCH_VERSION = -1 : ENGLISH_VERSION = 0 comme arguments de compilation conditionnelle et on met le code :
Bon, et bien voilà pour ce tutoriel !
@+