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

Visual C++ Discussion :

PB sur un switch case


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Electronicien
    Inscrit en
    Août 2008
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2008
    Messages : 377
    Par défaut PB sur un switch case
    Bonjour,

    Désolé pour la question qui va paraître simple, mais je comprend pas une chose qui me paraissait simple à la base.

    Sur un switch case que j'utilise fréquemment, mais là je dois être hs ce soir

    En faite, j'ai ce code là
    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
    				switch (lowByte)
    				{
    				case 0: int valeur0 = bufferusb(1, buf, 4); System::String^ decText0 = valeur0.ToString(); SetText(Analog0, decText0);
    						int valeur1 = bufferusb(5, buf, 8); System::String^ decText1 = valeur1.ToString(); SetText(Analog1, decText1);
    						int valeur2 = bufferusb(9, buf, 12); System::String^ decText2 = valeur2.ToString(); SetText(Analog2, decText2);
    						int valeur3 = bufferusb(13, buf, 16); System::String^ decText3 = valeur3.ToString(); SetText(Analog3, decText3);
    						int valeur4 = bufferusb(17, buf, 20); System::String^ decText4 = valeur4.ToString(); SetText(Analog4, decText4);
    						int valeur5 = bufferusb(21, buf, 24); System::String^ decText5 = valeur5.ToString(); SetText(Analog5, decText5);
    						int valeur6 = bufferusb(25, buf, 28); System::String^ decText6 = valeur6.ToString(); SetText(Analog6, decText6);
    						int valeur7 = bufferusb(29, buf, 32); System::String^ decText7 = valeur7.ToString(); SetText(Analog7, decText7);
    						int valeur8 = bufferusb(33, buf, 36); System::String^ decText8 = valeur8.ToString(); SetText(pwm4, decText8);
    						int valeur9 = bufferusb(37, buf, 40); System::String^ decText9 = valeur9.ToString(); SetText(pwm5, decText9); 
    						int valeur10 = bufferusb(41, buf, 44); System::String^ decText10 = valeur10.ToString(); SetText(Memoire1, decText10);
    						int valeur11 = bufferusb(45, buf, 48); System::String^ decText11 = valeur11.ToString(); SetText(Memoire2, decText11);
    						int valeur12 = bufferusb(49, buf, 52); System::String^ decText12 = valeur12.ToString(); SetText(Memoire3, decText12);
    						int valeur13 = bufferusb(53, buf, 56); System::String^ decText13 = valeur13.ToString(); SetText(Memoire4, decText13);
    						int valeur14 = bufferusb(57, buf, 60); System::String^ decText14 = valeur14.ToString(); SetText(Memoire5, decText14);
    						break;
     
     
    				}
    celui-ci fonctionne même si pour le moment s'est grossier
    seulement quand je rajoute un case de plus

    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
     
    				switch (lowByte)
    				{
    				case 0: int valeur0 = bufferusb(1, buf, 4); System::String^ decText0 = valeur0.ToString(); SetText(Analog0, decText0);
    						int valeur1 = bufferusb(5, buf, 8); System::String^ decText1 = valeur1.ToString(); SetText(Analog1, decText1);
    						int valeur2 = bufferusb(9, buf, 12); System::String^ decText2 = valeur2.ToString(); SetText(Analog2, decText2);
    						int valeur3 = bufferusb(13, buf, 16); System::String^ decText3 = valeur3.ToString(); SetText(Analog3, decText3);
    						int valeur4 = bufferusb(17, buf, 20); System::String^ decText4 = valeur4.ToString(); SetText(Analog4, decText4);
    						int valeur5 = bufferusb(21, buf, 24); System::String^ decText5 = valeur5.ToString(); SetText(Analog5, decText5);
    						int valeur6 = bufferusb(25, buf, 28); System::String^ decText6 = valeur6.ToString(); SetText(Analog6, decText6);
    						int valeur7 = bufferusb(29, buf, 32); System::String^ decText7 = valeur7.ToString(); SetText(Analog7, decText7);
    						int valeur8 = bufferusb(33, buf, 36); System::String^ decText8 = valeur8.ToString(); SetText(pwm4, decText8);
    						int valeur9 = bufferusb(37, buf, 40); System::String^ decText9 = valeur9.ToString(); SetText(pwm5, decText9); 
    						//int valeur10 = bufferusb(41, buf, 44); System::String^ decText10 = valeur10.ToString(); SetText(Memoire1, decText10);
    						//int valeur11 = bufferusb(45, buf, 48); System::String^ decText11 = valeur11.ToString(); SetText(Memoire2, decText11);
    						//int valeur12 = bufferusb(49, buf, 52); System::String^ decText12 = valeur12.ToString(); SetText(Memoire3, decText12);
    						//int valeur13 = bufferusb(53, buf, 56); System::String^ decText13 = valeur13.ToString(); SetText(Memoire4, decText13);
    						//int valeur14 = bufferusb(57, buf, 60); System::String^ decText14 = valeur14.ToString(); SetText(Memoire5, decText14);
    						break;
     
    				case 1:	int valeur1 = bufferusb(1, buf, 4); System::String^ decText1 = valeur1.ToString(); SetText(Memoire1, decText1);
    						int valeur2 = bufferusb(5, buf, 8); System::String^ decText2 = valeur2.ToString(); SetText(Memoire2, decText2);
    						int valeur3 = bufferusb(9, buf, 12); System::String^ decText3 = valeur3.ToString(); SetText(Memoire3, decText3);
    						int valeur4 = bufferusb(13, buf, 16); System::String^ decText4 = valeur4.ToString(); SetText(Memoire4, decText4);
    					        int valeur5 = bufferusb(17, buf, 20); System::String^ decText5 = valeur5.ToString(); SetText(Memoire5, decText5);
    						break;
     
     
    				}
    J'ai ce message d'erreur

    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
    Erreur	1	error C2360: l'initialisation de 'decText9' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	2	error C2360: l'initialisation de 'valeur9' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	3	error C2360: l'initialisation de 'decText8' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	4	error C2360: l'initialisation de 'valeur8' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	5	error C2360: l'initialisation de 'decText7' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	6	error C2360: l'initialisation de 'valeur7' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	7	error C2360: l'initialisation de 'decText6' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	8	error C2360: l'initialisation de 'valeur6' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	9	error C2360: l'initialisation de 'decText5' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	10	error C2360: l'initialisation de 'valeur5' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	11	error C2360: l'initialisation de 'decText4' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	12	error C2360: l'initialisation de 'valeur4' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	13	error C2360: l'initialisation de 'decText3' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	14	error C2360: l'initialisation de 'valeur3' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	15	error C2360: l'initialisation de 'decText2' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	16	error C2360: l'initialisation de 'valeur2' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	17	error C2360: l'initialisation de 'decText1' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	18	error C2360: l'initialisation de 'valeur1' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	19	error C2360: l'initialisation de 'decText0' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	20	error C2360: l'initialisation de 'valeur0' est ignorée par l'étiquette 'case'	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	21	error C2374: 'valeur1'*: redéfinition*; initialisation multiple	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Erreur	22	error C2374: 'decText1'*: redéfinition*; initialisation multiple	c:\users\portable\google drive\professionnel\etude\software\programme sous visual c++\vc++ 2008 -v5\dynamic cdc demo\Form1.h	2301	1	Dynamic CDC Demo
    Merci pour l'aide

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Mets des accolades dans tes case.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre très actif
    Homme Profil pro
    Electronicien
    Inscrit en
    Août 2008
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2008
    Messages : 377
    Par défaut
    OK ça fonctionne, seulement les accolades dans les case c'est propre au C++ par ce que en C ont en met pas, exemple de code du micro :

    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
    34
    35
    36
    37
    38
    				if(USBUSARTIsTxTrfReady())
    				{
     
    						switch(Data)
    						{
     
     
    						case 0 : //len=64;			// Nombre d'octet
    								 USB_In_Buffer[0]=0;  //ID Trame usb
    								 bufferusb(1,ANA[0], USB_In_Buffer,4);
    								 bufferusb(5,ANA[1], USB_In_Buffer,8);
    								 bufferusb(9,ANA[2], USB_In_Buffer,12);
    								 bufferusb(13,ANA[3], USB_In_Buffer,16);
    								 bufferusb(17,ANA[4], USB_In_Buffer,20);
    								 bufferusb(21,ANA[5], USB_In_Buffer,24);
    								 bufferusb(25,ANA[6], USB_In_Buffer,28);
    								 bufferusb(29,ANA[7], USB_In_Buffer,32);
    							 	 bufferusb(33,rp_cy4, USB_In_Buffer,36);
    								 bufferusb(37,rp_cy5, USB_In_Buffer,40);
    								 //bufferusb(41,out1_usb, USB_In_Buffer,44);
    								 //bufferusb(45,out2_usb, USB_In_Buffer,48);
    								 //bufferusb(49,out3_usb, USB_In_Buffer,52);
    								 //bufferusb(53,out4_usb, USB_In_Buffer,56);
    								 //bufferusb(57,out5_usb, USB_In_Buffer,60);
    								 break;
     
     
    						case 1 :
    								 USB_In_Buffer[0]=1;  //ID Trame usb
    								 bufferusb(1,out1_usb, USB_In_Buffer,4);
    								 bufferusb(5,out2_usb, USB_In_Buffer,8);
    								 bufferusb(9,out3_usb, USB_In_Buffer,12);
    								 bufferusb(13,out4_usb, USB_In_Buffer,16);
    								 bufferusb(17,out5_usb, USB_In_Buffer,20);
    							  	 break;
     
     
    						}
    c'est d'ailleurs l'émission des données sur le bus USB que j'envoi vers le PC et qui fonctionne.

    Merci Médinoc

  4. #4
    Membre très actif
    Homme Profil pro
    Electronicien
    Inscrit en
    Août 2008
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2008
    Messages : 377
    Par défaut
    j'ai aussi utilisé un switch case en C++ comme :

    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
    					switch (nbr_data)
    					{
     
    					case 1: val = (int)valeur1->Value;
    						inttoarray(ID_VAL1, val, buffout, 4);
    						//serialPort1->Write(buffout, 0, 6);
    						break;
    					case 2: val = (int)valeur2->Value;
    						inttoarray(ID_VAL2, val, buffout, 4);
    						//serialPort1->Write(buffout, 0, 6);
    						break;
    					case 3: val = (int)valeur3->Value;
    						inttoarray(ID_VAL3, val, buffout, 4);
    						//serialPort1->Write(buffout, 0, 6);
    						break;
    					case 4: val = (int)valeur4->Value;
    						inttoarray(ID_VAL4, val, buffout, 4);
    						//serialPort1->Write(buffout, 0, 6);
    						break;
    					case 5: val = (int)valeur5->Value;
    						inttoarray(ID_VAL5, val, buffout, 4);
    						//serialPort1->Write(buffout, 0, 6);
    						break;
     
    					}
    Dans ce switch ou j'envoi mes données vers ma carte il me demande pas d'accolade, je comprend pas pourquoi dans un cas je dois les mettre et pas dans l'autre, je sais qu'exceptionnellement quand il y a qu'une seul instruction ce n'est pas nécessaire seulement là c'est pas le cas ?

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu as besoin d'accolades, en C comme en C++, quand tu déclares une variable dans un case.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 487
    Par défaut
    Le "truc" en vieux C (avant C99 je crois), on n'avait pas le droit de déclarer des variables dans un case, donc pas besoin d'accolade.

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

Discussions similaires

  1. Switch/Case - boucle sur une case ou sur l'ensemble
    Par nevoa dans le forum Langage
    Réponses: 3
    Dernier message: 24/06/2014, 15h45
  2. Probleme sur un switch case
    Par Hew dans le forum Débuter
    Réponses: 5
    Dernier message: 24/06/2011, 17h40
  3. Switch / case mais sur deux variables ?
    Par Bktero dans le forum Débuter
    Réponses: 4
    Dernier message: 15/06/2010, 15h58
  4. [DropDownList] Switch case sur sélection
    Par Ykaar dans le forum ASP
    Réponses: 1
    Dernier message: 02/08/2007, 11h18
  5. [Language] aide sur les switch case
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 05/04/2005, 11h34

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