Tester si une constante est déclarée (VB6)

Résolu
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 11 févr. 2008 à 13:05
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 18 févr. 2008 à 18:04
Bonjour ,
    Je travail actuellement sur des classes à ajoutées à un 'gros' projet. A fin d'être carré avec ma charte de codage (et non le projet que je modifie n'en avais pas ) j'ai modifier le nom de certaine constante (déclarées privées dans ma classe, ce qui me permet en prime de crée plus simplement de petit projet test). Mon problème est : je veut que si jamais la valeur de ces constantes change (celle du gros projet) ma classe reste à jours sans pour autant avoir de modification à faire (je ne sait pas si je suis vraiment claire avec du code ce sera peut être plus claire).

Un 'truc' du genre :
8<----------------------------------------------------------
#If "la constante NomConstante est déclarée" Then
    Private Const C_NomConstante = NomConstante
#Else
    Private Const C_NomConstante = ValeurParDéfaut
#End if
---------------------------------------------------------->8
Je cherche la sintaxe de "la constante NomConstante est déclarée" et je ne trouve pas .

Heee en faite , c'est vraiment possible ?

Amicalement
Pensez "Réponse acceptée"

10 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 févr. 2008 à 14:17
Bonjour

Essaye :
Dans les propriétés du projet, options de compliation, Compilation conditionnelle.

Et ensuite #IF DEBUG Then 'Ici Debug permet de tester si ton projet est en cour de débugage ou en version distribuée.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
3
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
11 févr. 2008 à 14:19
J'ai une solution TEMPORAIRE (donc je ne valide pas ma question comme résolut) :

Mes constantes sont toutes de type numérique et ne sont jamais égale à 0 (dans le cas contraire ça ne fonctionnera pas, donc si vous avez une autre solution ça m'arrangerais bien).

#If CBool(NomConstante) Then
    C_NomConstante = NomConstante
#Else
    C_NomConstante = ValeurParDéfaut
#End if

Amicalement
Pensez "Réponse acceptée"
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
11 févr. 2008 à 14:21
Merci NHenry pour l'idée 
(même si ce n'est pas exactement ce que je cherche ça peut effectivement se faire comme ça)

Amicalement
Pensez "Réponse acceptée"
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 févr. 2008 à 14:38
Bonjour

Il me semble de CBool retourne False que si l'expression à convertir est = à 0 ...

Ce que tu cherche serait du style :

#If Constante=10 Then
    ...
#EsleIf Constante=11 Then
...
#Else
...
#End If

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
11 févr. 2008 à 15:35
Oui mais il semble (au vue de mes tests) que si la constante n'est pas déclarer CBool retourne false (sauf si elle est égale à 0)
Je commence à pensé que le mieux ce serais ta (NHenry) premières idée qui serais la bonne (je m'aperçoit que j'ai le même problème avec la déclaration de certaine structure)

Mais l'équivalent de "#ifdefine" en C/C++ n'existe pas en VB6 (il me semble que ça fonctionne avec des constantes des types voir des structures ou pour le C++ des classes, à moins que je ne raconte de grosse connerie, ce qui est possible ça fait LONGTEMPS que je n'es pas fait de C/C++) ? (Et en VB.Net ???)

Merci

Amicalement
Pensez "Réponse acceptée"
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
11 févr. 2008 à 15:42
Pardon un oubli :

Ce que je cherche c'est un truc du genre de (en C/C++)
#ifdefine NomConstante
    #define C_NomConstante NomConstante
#else
    #define C_NomConstante ValeurParDefaut
#endif

Il me semble même que ça fonctionne si NomConstante n'est pas une constante mais un type une structure ou encore une classe (mais à vrais dire je n'en suis pas certain du tout ).
Amicalement
Pensez "Réponse acceptée"
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 févr. 2008 à 15:43
Bonjour

#ifdefine du C/C++ permet de savoir si une définition (déclarée par #define) a été déclarée ou non.
d'ailleur, il me semble que c'est :
#ifdef
et
#ifndef

En VB6, je doute que ça existe (mais je n'ai jamais testé).

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
11 févr. 2008 à 15:54
En tout cas si l'équivalent de "#ifdef" (effectivement ça dois être ça la syntaxe) existe en VB la syntaxes n'est pas la même...
Quand c'est facile c'est pas drôle...

Amicalement
Pensez "Réponse acceptée"
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
11 févr. 2008 à 16:00
J'attend qq jours et si personne ne sait répondre à mon problème j'utiliserais (et accepterais) la solution que tu (NHenry) à posté en premier (Compilation conditionnelle) j'ai beau faire de recherche dans tout les sens je ne trouve rien qui me convienne mieux que ça (vue que avec cette solution je sait si je dois déclarer, entre autre, mes structures ou non)
Merci bien HNenry
Amicalement
Pensez "Réponse acceptée"
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
18 févr. 2008 à 18:04
Donc à priori pas d'autre solution ....
Bon je vais faire comme ça alors...
Merci NHenry du temps accordé à mon problème

Si quel qu'un trouve POSTER SVP


Amicalement
Pensez "Réponse acceptée"
0
Rejoignez-nous