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

MFC Discussion :

Problème switch case


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 142
    Par défaut Problème switch case
    bonjour ( et oui, encore lui lol )
    Le code qui suit devrait me permettre de tester la valeur de retour d'une fonction et de réaliser l'action souhaité grace à un swith case !

    or, Monsieur le compilateur me jete comme un mal propre lors de la compilation.

    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    void CRecupValideesDlg::OnActualiser2() 
    {
     char CMD[] = {"\r"};// variable stockant la commande. parametre de la fonction de sandrine
     int erreur;   // variable stockant le code d'erreur retourner par la fct récupération
     
     // fonction de Récupartion
     // à implémenter
     erreur = 0;   // affectation d'une valeur pour tester le switch case
     
     switch (erreur)
     {
      case 0 : // ce qui doit ce passer
       // lecture du fichier contenant le nom des fichiers :
       char buff[200];
       ifstream infile("liste"); // ouverture du fichier liste.txt
       //while(!infile.eof()) si plusieurs ligne dans le fichier, faire une boucle
       infile.getline(buff, sizeof(buff)); //lecture d'une ligne complete
       infile.close();
     
       // affichage du fichier dans la zone d'édition
       CString s(buff), s2("il y a ");   
       s.Replace(":"," fichiers présents :\r\n\r\n");  // change les ":" par la chaine avec un retour chariot + nvlle ligne
       s.Replace(",","\r\n");  // change les "," par des retour chariot + nvlle ligne
       s2 += s;
       m_edit.SetWindowText(s2); // affiche le contenu de s
       break;
     
      case 1 : 
       CString s(buff);
       m_edit.SetWindowText(s2);
       break;
     }
    }
    Si je réalise le test en mettant case 1 en commentaire, tout ce passe bien, il réagit au changement de valeur de la variable erreur.
    Mais, dès que je tente de compiler avec du code dans le case 1, il me jete en me disant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Compiling...
    RecupValideesDlg.cpp
    E:\Projet\C++\aquarium\RecupValideesDlg.cpp(84) : error C2360: initialization of 's2' is skipped by 'case' label
            E:\Projet\C++\aquarium\RecupValideesDlg.cpp(77) : see declaration of 's2'
    E:\Projet\C++\aquarium\RecupValideesDlg.cpp(84) : error C2360: initialization of 's' is skipped by 'case' label
            E:\Projet\C++\aquarium\RecupValideesDlg.cpp(77) : see declaration of 's'
    E:\Projet\C++\aquarium\RecupValideesDlg.cpp(84) : error C2360: initialization of 'infile' is skipped by 'case' label
            E:\Projet\C++\aquarium\RecupValideesDlg.cpp(69) : see declaration of 'infile'
    E:\Projet\C++\aquarium\RecupValideesDlg.cpp(85) : error C2086: 's' : redefinition
    Error executing cl.exe.
    Si vous aviez des ptits trucs a me donner ... lol je serai le plus heureux !

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    tu as oubliés les accolades

    c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    switch (erreur)
    { 
    case 0: 
        {
            ... 
            break;
         }
    ...
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par défaut
    bonjour

    Fait attention à la portee de tes variables.

    Declare tes CString au debut de ta fonction et initialise les pendant tes CASE

    Cordialement

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 142
    Par défaut
    d'accord, je vais de ce pas mettre en place vos recommendations !

    merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 142
    Par défaut
    Alors vous aviez tous les deux raisons, il me manquait les parenthèses
    * demande une corde pour ce pendre *

    De plus, mes variables était mal déclarées ....

    Voici le code final
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     switch (erreur)
     {
      case 0 : // ce qui doit ce passer
       {
       // lecture du fichier contenant le nom des fichiers :
       char buff[200];
       ifstream infile("liste"); // ouverture du fichier liste.txt
       //while(!infile.eof()) si plusieurs ligne dans le fichier, faire une boucle
       infile.getline(buff, sizeof(buff)); //lecture d'une ligne complete
       infile.close();
     
       // affichage du fichier dans la zone d'édition
       CString s(buff), s2("il y a ");   
       s.Replace(":"," fichiers présents :\r\n\r\n");  // change les ":" par la chaine avec un retour chariot + nvlle ligne
       s.Replace(",","\r\n");  // change les "," par des retour chariot + nvlle ligne
       s2 += s;
       m_edit.SetWindowText(s2); // affiche le contenu de s
       break;
       }
      case 1 : 
       {
       char buff[200];
       CString s(buff);
       m_edit.SetWindowText(s);
       break;
       }
     }
    }
    Sa fonctionne !

    Ps : si je déclare mes variable au début, sa va devenir comme cela ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void CRecupValideesDlg::OnActualiser2() 
    {
     char CMD[] = {"\r"};// variable stockant la commande. parametre de la fonction de sandrine
     int erreur;   // variable stockant le code d'erreur retourner par la fct récupération
     char buff[200];
    CString s(buff), s2("il y a ");
    Merci de votre aide !

  6. #6
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    ouaip je pense :d

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 142
    Par défaut
    Oki !

    Merci bien en tout cas

  8. #8
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    oublie pas le tag résolu

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 142
    Par défaut
    Pour le coup, j'ai fait le test et donc lorsque je déclare

    CString s(buff),s2("il y a"), sa déconne, je doit au moins les déclaré dans le case .... certainement à cause de Replace ....

    Voili ...
    En tout cas, merci sa me fait apprendre des choses

    allez, maintenant je vais me prendre la tête pour que le case m'ouvre une boite de dialogue

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

Discussions similaires

  1. problème switch case
    Par fpaquin dans le forum Langage
    Réponses: 1
    Dernier message: 17/03/2011, 09h48
  2. problème de case/switch
    Par nicolas.sitbon dans le forum C
    Réponses: 5
    Dernier message: 22/09/2007, 21h00
  3. Problème de boucle Switch Case
    Par mLk92 dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2007, 17h20
  4. Problème de switch-case ou de buffer ?
    Par Gilouou dans le forum C
    Réponses: 8
    Dernier message: 11/11/2006, 21h08
  5. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 16h37

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