IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Switch avec des variables


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Switch avec des variables
    Bonjour, voici le code qui pose problème à Builder (ahlala les limites du C++) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    switch(Msg.WParam)
        {
            case alpha : Affiche1(); break;
            case beta : Affiche2(); break;
            case ceta : Affiche3(); break;
        }
    Le switch attend dans les case des constantes alors que là je veux mettre mes variables, ces variables contiennent un caractère.
    alpha <-- 'A'
    beta <-- 'B'
    ceta <-- 'C'

    L'utilisateur pourra modifier le caractère comme il le souhaite, c'est pour cela que j'utilise ces variables pour les associer à une commande.

    Msg.WParam est de type entier.
    alpha, beta, ceta de type caractère.

    Le switch fonctionne dès lors que l'on remplace les variables par un caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    case 'A' : Affiche1(); break;
    case 'B' : Affiche2(); break;
    case 'C' : Affiche3(); break;
    Comment je peux forcer l'utilisation de mon switch avec les variables ?
    Merci.

  2. #2
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Regarde par la :
    http://c.developpez.com/faq/bcb/?pag...itchansistring




    lanonyme

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Je sais, j'utilise deja ça pour des AnsiString mais là je suis avec des entiers, je ne compare pas de chaînes de caractères !
    Je crois que je vais faire ça avec la bonne vieille méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (Msg.WParam == alpha) Affiche1();
    else if (Msg.WParam == beta) Affiche2();
    else if (Msg.WParam == ceta) Affiche3();

  4. #4
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut


    Ca doit etre la faim qui me fait dire n'importe quoi

    Effectivement, le 'case' necessite obligatoire une constante

    par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (Msg.WParam == alpha) Affiche1();
    else if (Msg.WParam == beta) Affiche2();
    else if (Msg.WParam == ceta) Affiche3();
    fonctionne aussi bien sans les else ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (Msg.WParam == alpha) Affiche1();
    if (Msg.WParam == beta) Affiche2();
    if (Msg.WParam == ceta) Affiche3();
    lanonyme

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    C'est pas faux
    Ca revient au même de toute façon !
    Comme quoi il faut pas chercher bien loin des fois.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,
    Citation Envoyé par lanonyme

    par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (Msg.WParam == alpha) Affiche1();
    else if (Msg.WParam == beta) Affiche2();
    else if (Msg.WParam == ceta) Affiche3();
    fonctionne aussi bien sans les else ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (Msg.WParam == alpha) Affiche1();
    if (Msg.WParam == beta) Affiche2();
    if (Msg.WParam == ceta) Affiche3();
    lanonyme
    Oui, mais avec l'inconvénient qu'il fera tous les tests enchaînés, alors qu'avec des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (...) {...}
    else if (...)
    etc...
    Les tests stopperont dès qu'on aura trouvé le bon

  7. #7
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Citation Envoyé par thewho
    Les tests stopperont dès qu'on aura trouvé le bon
    Oui effectivement, enfin je trouve que pour la visibilité l'enchainement de if va mieux.
    Toutefois, si on veut vraiment optimiser le code alors oui faire des if else if.

    Enfin, ça marche dans les deux cas c'est le principal

    lanonyme

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/11/2005, 12h03
  2. Remplir les cellules Excel avec des variables VB
    Par rupeni dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/11/2005, 09h31
  3. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45
  4. paramétrer ADOConnection avec des variables
    Par ouckileou dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/04/2004, 08h11
  5. UPDATE avec des variables Delphi ...
    Par Kokito dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/03/2004, 22h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo