Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LA COMPILATION CONDITIONNELLE EN VB6


Information sur le tutorial

Catégorie :Tutoriaux Date de création : 08/02/2007 15:56:01 Vu : 7 783 fois

Note :
8,67 / 10 - par 3 personnes
8,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


Description

Ce tutoriel explique qu'est ce que la compilation conditionnelle, à quoi çà sert, comment s'en servir et donne quelques exemples illustratifs.

Tutorial

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

 

Sans titre1.jpg 

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.

 Sans titre2.jpg

 

« Si nous sommes en présence d'une version payante de l'application, alors on active certaines fonctions sinon on les désactive »

 Sans titre3.jpg

 

« 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 :

 Sans titre4.jpg

 

 

Bon, et bien voilà pour ce tutoriel !

@+

08 février 2007 16:03:36 :
Mise en page
12 février 2007 18:51:46 :
Correction exemple + mise en page + correction explication utilisation #instruc
signaler à un administrateur
Commentaire de nourwahiba le 11/02/2007 14:16:32

merci beaucoup  violent_ken
vraiment merci

signaler à un administrateur
Commentaire de violent_ken le 11/02/2007 14:17:26

Mais de rien, content que çà serve ^_-

@+

signaler à un administrateur
Commentaire de Renfield le 12/02/2007 09:37:08 administrateur CS

Pour la langue, pas convaincu (préférer des resources externes)

les Debug.Print ne sont pas déjà compilées...

sinon, ce tutoriel est bien fait, et pourra en aider plus d'un !

signaler à un administrateur
Commentaire de violent_ken le 12/02/2007 10:18:27

Alors pour les Debug.Print, ok, je ne savais pas puisque je ne les utilise jamais ;) Je pensais plutôt à tout ce qui est Msgbox "Test" & Cstr(maValeur)...

Pour les langues, je tire cet exemple d'application de MSDN.

Donc je changerais le Debug... puisque mauvais exemple^^

@+

signaler à un administrateur
Commentaire de violent_ken le 12/02/2007 13:26:35

Pour la langue, je tire l'exemple d'ici :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconconditionalcompilation.asp

Bon après, il ne s'agit pas forcément de faire de la traduction (préfère aussi les ressources externes), mais pourquoi pas de changer certaines options du logiciel en fonction de la langue.

@+

signaler à un administrateur
Commentaire de asimengo le 12/02/2007 16:34:39

Déjà super de la peine donnée pour ce tuto.

Juste une question banale peut-être.

Pourquoi le compilateur oblige d'avoir "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 ."

Peut-il comprendre un truc du genre #if command$="fr" then ...

ASIMENGO

signaler à un administrateur
Commentaire de violent_ken le 12/02/2007 18:42:31

Salut, alors deux précisions

1) Le compilateur exige que la condition #If Then #End If se fasse sur plusieurs lignes. Autrement dit, il est impossible de faire :

#If CONDITION Then Msgbox "Test"

Il faudra faire :

#If CONDITION Then
    MsgBox "Test"
#End If



2) Le compilateur décide d'inclure ou non les instructions comprises entre le #If et le #End If AU MOMENT de la compilation. Autrement dit, CONDITION ne dépend pas de ce que fait le programme mais CONDITION est FIXEE : c'est une constante.

Donc impossible de faire #If Command$="Test" Then.... puisque Command$ dépend du programme (de son ouverture).
De même, pas possible de faire

a=val(InputBox(""))
#If a=1 Then....

puisque a dépend de l'utilisateur.
La condition 'a=1' doit être fixée, donc 'a' doit être une constante exclusivement.

Ou bien une combinaison de constantes, exemple :

#Const VAR1=True
#Const VAR2=True
#Const VAR3=True
...
#If (VAR1 And VAR2) Or VAR3 Then....

Voilà, j'espère être clair.
@+ et merci pour le commentaire

signaler à un administrateur
Commentaire de unamed_2 le 13/06/2007 11:27:47

Vraiment pas mal, personnellement je me prenais la tête à créer des valeurs dans le registre et dans des fichiers textes pour mes versions d'essai...
J'essaierai cette méthode la prochaine fois !

Merci

signaler à un administrateur
Commentaire de Philippe222 le 02/10/2007 15:51:37

Bonjour,

Un truc de mise au point que j'utilise souvent. Si on veut momentanément enlever des lignes de programme, au risque de les remettre plus tard, on peut faire :

#If false Then
    ' Tout ce que je mets de côté
    ' pour un éventuel retour arrière
    ...
    ...
#End If

En cas de repentir, il n'y a que deux lignes à modifier. Pas de mises en commentaires. Pas de copier-coller.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,031 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.