Bonjour,
Je m'essaye à l'utilisation de configurations multiples pour un même projet.
Apparemment, le code d'initialisation du projet est commun à toutes les configurations.
Comment éviter qu'il s'exécute pour une configuration donnée ?
Bonjour,
Je m'essaye à l'utilisation de configurations multiples pour un même projet.
Apparemment, le code d'initialisation du projet est commun à toutes les configurations.
Comment éviter qu'il s'exécute pour une configuration donnée ?
Pour cela on peut utiliser l'instruction ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <COMPILE SI Configuration="MaConfig"> <FIN>
Bonjour,
Il faut passer par la compilation conditionnelle
e.g.
Ce type de configuration peut aussi être utilisé dans le code. e.g. Utilisation de la BDR pour les applications Windows, écriture dans un fichier INI sinon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <COMPILE SI TypeConfiguration=ApplicationLinux> <COMPILE SI Configuration="MaConfig1" OU Configuration="MaConfig2"> //Instruction communes aux configuration "MaConfig1" et "MaConfig2" <SINON> //Intructions communes aux autres configurations Linux <SINON> //Intructions communes aux configurations non Linux <FIN> //Instructions communes à toutes les configurations.
Remarque Pour les versions antérieures à 21, COMPILE SI n'est pas disponible, tout se fait dans des "Volets de code" multiples et on n'a pas accès au nom de la config. On accède à ces volets via "Code cible" dans l'onglet "Code"
Jusqu'à la version 24 incluse, les 2 modes sont disponibles.
Il y a peut-être plus simple, mais ça tourne.
Quand tout a échoué utilisez l'option RTFM
Je pensais bien devoir utiliser <COMPILE SI>, merci.
Et si je veux 'sauter' tout un bloc de code dans le code d'initialisation du projet, on ne peut pas utiliser RETOUR car il n'y a nulle part où 'retourner' !
Je m'en vais utiliser un GOTO ! Non, non, pas la tête !
ps: il n'y a pas le préfixe [WD26] en création de discussion.
Le Compile SI permet ce genre de chose (si le code n'est à être exécuté que pour certaines configratuion)
Edit : Avec des OU plutôt que des ET
Code : Sélectionner tout - Visualiser dans une fenêtre à part <compile si Configuration="MaConfig1" _OU_ Configuration="MaConfig2" _OU_ Configuration="MaConfig3">
De même, on pet faire ceci si le code est à exécuter pour toute les config sauf une
ou cela
Code : Sélectionner tout - Visualiser dans une fenêtre à part <COMPILE SI Configuration<>"MaConfig">
Le GOTO, c'est le mal donc, si ce n'est la tête, ça sera au moins les doigts.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <compile si pas Configuration="MaConfig1" _et_ PAS Configuration="MaConfig2" _et_ pas Configuration="MaConfig3">
Et je répondrais aussi à la question qui n'a pas été posé qui est :"Comment démarrer sur une fenêtre différentes selon la configuration ?"
Toujours via un Compile Si.
Nous indiquons notre fenêtre principal qui sera celle de la configuration "principal" et à la fin du code d'intialisation, nous aurons ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <COMPILE SI Configuration="MaConfig1"> Ouvre(MaFenPrincipal1) FinProgramme() <FIN> <COMPILE SI Configuration="MaConfig2"> Ouvre(MaFenPrincipal2) FinProgramme() <FIN> <COMPILE SI Configuration="MaConfig3"> Ouvre(MaFenPrincipal3) FinProgramme() <FIN>
Tu peux mettre tout ton code d'init du projet dans une procédure init_projet()
Et là tu pourra mettre des RETOUR autant que tu veux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure init_projet() <COMPILE SI Configuration="MaConfig1"> init_config1() retour <FIN> <COMPILE SI Configuration="MaConfig2"> init_config2() retour <FIN>
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
Pour les RETOUR multiples, non dans les procédures. Une procédure à un point d'entrée un point de sortie. Les RETOUR rendent plus difficile le debug et la factorisation des codes. Pour les COMPILE SI, le mettre à la fin je ne comprends pas pourquoi puisqu'ensuite l'exécution du code s'arrête si il n'y a pas d'autres codes après et que les COMPILE SI suivants ne sont pas pour la même conf.
Pour les globales au projet ou a une config de projet, il ne faut pas tout coller dans le code d'init du projet même si c'est possible de le faire dans les différents COMPILE SI. Si des globales sont nécessaires c'est peut être que la fonctionnalité qu'elles couvrent peut être encapsulées dans une classe (qui est ou pas un singleton). Les globales compliquent également la factorisation car quand on les multiplie et qu'on les utilise, on est obligé de vérifier les portions de code qui s'en servent pour être sûr de ne pas causer d'effets de bord.
C'est de la dette technique qui s'accumule dans les 2 cas.
Quand aux GOTO, sans commentaire, ce que j'en pense devrait se deviner
Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.
Sur internet, tout est vrai ! Honoré de Balzac
Make it real not fantasy... Herman Rarebell
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager