Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compilation conditionnelle

4 réponses
Avatar
Arnaud CAVELIER
Bonjour,

J'ai lu un article très intéressant sur la compilation conditionnelle qui
permet de différencier certaines parties du code en fonction des références
externes auxquelles on a besoin.

La difficulté est que je n'arrive pas à l'intégrer dans un MDE...

Avez-vous déjà une expérience ?

Merci de votre aide.
Arnaud CAVELIER

4 réponses

Avatar
J-Pierre
Bonsoir Arnaud,

C'est quoi, la compilation conditionnelle ?

Dans sa version actuelle, Access compile tout ou rien, et créer un MDE avec une base non compilée ou compilée avec des erreurs ne
t'amènera que des ennuis.

J-Pierre

"Arnaud CAVELIER" a écrit dans le message de news:

Bonjour,

J'ai lu un article très intéressant sur la compilation conditionnelle qui
permet de différencier certaines parties du code en fonction des références
externes auxquelles on a besoin.

La difficulté est que je n'arrive pas à l'intégrer dans un MDE...

Avez-vous déjà une expérience ?

Merci de votre aide.
Arnaud CAVELIER


Avatar
3stone
Salut,

"J-Pierre"
| C'est quoi, la compilation conditionnelle ?
|
| Dans sa version actuelle, Access compile tout ou rien, et créer un MDE avec une base non compilée
ou compilée avec des erreurs ne
| t'amènera que des ennuis.



Extrait de l'aide :

#Const conDebug = 1

Sub SelectiveExecution()
#If conDebug = 1 Then
. ' Exécute un code avec instructions de débogage.
.
.
#Else
. ' Exécute le code normal.
.
.
#End If
End Sub



Avec l'exemple donné ici, lle changement de la valeur de la constante
permet de compiler (de rendre actif) une autre version de code.
Les "#" indique au compilateur que c'est du code conditionel !

Cela permet par exemple de lier la compilation à la version d'Access,
avec l'inconvénient que tu as deux codes à débuguer...

Très peu utilisé en fait ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
J-Pierre
Bonsoir Pierre,

Si j'ai bien compris, la compilation conditionnelle, c'est totalement défini et contrôlé par l'utilisateur. Si je comprends bien
aussi, rien ne t'empêche d'avoir 254878965 versions différentes de ton code.......Ca doit rapidement devenir illisible......

#Const conDebug = 1

Sub SelectiveExecution()
#If conDebug = 1 Then
. ' Exécute un code avec instructions de débogage.
#ElseIf conDebug = 2 Then
. ' Exécute ??????? .
#ElseIf conDebug = 3 Then
. ' Exécute ??????? . .
#End If
End Sub

Non, ça marche pas comme ça ?

Mouais.....dans ma jeunesse, on m'a appris qu'il y avait 3 environnements différents: de développement, de test et de
production.....et puis des archives

En tout cas, merci pour l'explication :-)

J-Pierre


"3stone" a écrit dans le message de news: e$
Salut,

"J-Pierre"
| C'est quoi, la compilation conditionnelle ?
|
| Dans sa version actuelle, Access compile tout ou rien, et créer un MDE avec une base non compilée
ou compilée avec des erreurs ne
| t'amènera que des ennuis.



Extrait de l'aide :

#Const conDebug = 1

Sub SelectiveExecution()
#If conDebug = 1 Then
. ' Exécute un code avec instructions de débogage.
.
.
#Else
. ' Exécute le code normal.
.
.
#End If
End Sub



Avec l'exemple donné ici, lle changement de la valeur de la constante
permet de compiler (de rendre actif) une autre version de code.
Les "#" indique au compilateur que c'est du code conditionel !

Cela permet par exemple de lier la compilation à la version d'Access,
avec l'inconvénient que tu as deux codes à débuguer...

Très peu utilisé en fait ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/





Avatar
3stone
Salut,

"J-Pierre"
[...]
| Si je comprends bien aussi, rien ne t'empêche d'avoir 254878965 versions différentes de ton
code.....

l'idée est de n'avoir qu'une version, mais de compiler les bouts "qui vont bien"


| Ca doit rapidement devenir illisible......

surtout lorsque l'on lit certains codes, à plus de vingt lignes, on ne suit plus ;-)


|
| #Const conDebug = 1
|
| Sub SelectiveExecution()
| #If conDebug = 1 Then
| . ' Exécute un code avec instructions de débogage.
| #ElseIf conDebug = 2 Then
| . ' Exécute ??????? .
| #ElseIf conDebug = 3 Then
| . ' Exécute ??????? . .
| #End If
| End Sub
|
| Non, ça marche pas comme ça ?

si...


| Mouais.....dans ma jeunesse, on m'a appris qu'il y avait 3 environnements différents: de
développement, de test et de
| production.....et puis des archives

En fait, tu sais bien que Access n'exécute pas le "texte canonique"
celui que tu saisi, mais bien le code compilé.
Le code ajouté ou modifié se fait compiler lors du "run" de l'appli, normalement !?!
Car, il arrive que Access se prenne les pieds dans le tapis et s'y perde un peu
dans les portions de nouveau code et de vieux code (compilé, mais plus utilisé ou
corrompu), ce que j'appelle du code mort ou cadavre.

C'est d'ailleurs ici qu'intervient la notion de "decompile" qui vire tout le code
déjà compilé et qui place le flag "not compiled", ce qui permet à Access
de faire un re-compilation *totale* du texte canonique, même celui dont
la compilation est (était) prétendument ok.

Quant a la MDE, elle consiste entre autre à virer tout le texte canonique
(ce qui explique pourquoi une MDE est *définitivement* non éditable !! )
mais Access s'assure *d'abord* du fait que le code soit parfaitement compilé
(c'est pourquoi Access rechigne parfois à créer cette MDE, au moindre "doute")

Pour revenir à la compilation conditionnelle, elle permet de ne compiler
que la partie concernée du code... ce qui ne se marie pas avec une MDE ;-)
Car il ne faut surtout pas confondre compilation conditionnelle et une
exécution conditionnelle !


PS: Je l'ai conseillé souvent et le répète...
Il ne faut jamais quitter l'éditeur après un ajout ou modification de code
sans demander expressément la compilation. Il reste suffisamment d'erreurs
qui ne sont pas détectable à ce moment là, pour ne pas les ajouter
à une base "qui tourne".
Ce qui explique mon désarroi lorsque la question vient: "c quoi compilé" ;-))

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/