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# Discussion :

System.FormatException*: 'Le format de la chaîne d'entrée est incorrect.'


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 25
    Par défaut System.FormatException*: 'Le format de la chaîne d'entrée est incorrect.'
    Bonsoir à tous !

    Je rencontre un petit soucis avec ces deux lignes de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Calcul du score
                int noteTotale = int.Parse(lblScoreKart.Text + lblScorePerso.Text + lblScoreRoue.Text + lblScoreVoile.Text);
                txtNote.Text = noteTotale.ToString();
    Pas de soucis de syntaxe à priori mais le programme plante et le message 'Le format de la chaine d'entrée est incorrect' ! Je dispose pourtant bien de int dans mes listes !
    Je ne vois pas comment régler le problème.

    Merci de votre aide ;-)

  2. #2
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 658
    Par défaut
    Bonsoir,

    Attention ce que tu fais ce n'est pas des additions mais des concaténations. Bien que tu fasses ça dans une méthode qui convertisse en int du texte, le compilateur va avant ça faire les opérations, mais comme ce sont des strings, il va les mettre bout à bout. Alors tu te retrouve avec :

    "10000" + "10000" = 1000010000
    Au lieu de

    10000 + 10000 = 20000
    Du coup vu que tu as 4 labels, soit il y a un autre chose qu'un chiffre qui traîne, soit tu dépasses la valeur maximale de l'int. Quoi qu'il arrive tu dois convertir un à un les labels et ensuite les additionner.

    Par contre reprendre des valeurs attribuées à des labels, ce n'est pas très pratique. Tu n'as pas une classe qui attribue en premier lieu ses valeurs aux labels avec laquelle tu pourrais travailler directement ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 25
    Par défaut
    Salut Pixel :-)

    En fait je n'ai besoin d'extraire que ces 4 labels. Une fois fonctionnel je n'aurais plus besoin de faire cette opération.
    J'ai donc changé le code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Calcul du score
                int note1 = int.Parse(lblScoreKart.Text);
                int note2 = int.Parse(lblScorePerso.Text);
                int note3 = int.Parse(lblScoreRoue.Text);
                int note4 = int.Parse(lblScoreVoile.Text);
                int noteTotale = note1 + note2 + note3 + note4;           
     
                txtNote.Text = noteTotale.ToString();
    Malheureusement j'ai toujours le même message d'erreur. Mon résultat max sera d'environ 400 ou 500 donc pour les int cela devrait le faire.

    Encore merci pour ton aide Pixel :-)

  4. #4
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 658
    Par défaut
    Bonjour,

    D'accord mais du coup qu'est ce qui est contenu dans tes labels ? Si tu peux nous donner des exemples de valeur ou alors comment tu renseignes en premier lieu ces labels, etc ...

    Si possible la valeur directement, pas juste ce qui en résulte l'affichage, pour ne pas louper un caractère non visible.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 25
    Par défaut
    Oui opas de soucis

    Je passe par une liste comme ceci : List<int> scorePerso = new List<int>();.
    Ensuite j'ajoute mes valeurs comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    scorePerso.Add(341);
    scorePerso.Add(341);
    scorePerso.Add(352);
    Puis j'affiche le score dans un label après selection d'un nom dans un comboBox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void cbxPerso_SelectedValueChanged(object sender, EventArgs e)
            {
                int index = cbxPerso.SelectedIndex;
     
                for (int k = 0; k < scorePerso.Count; k++)
                {
                    lblScorePerso.Text = scorePerso[index].ToString();
    }
    tout cela x 4... Ensuite je cherche donc à récupérer mes valeurs dans les labels pour les additionner.

    Encore Merci ;-)

  6. #6
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 658
    Par défaut
    Mhh il n'y a rien d'anormal à priori.

    Est-il possible qu'un joueur ait un label avec du texte vide ? Car int.Parse() ne considère pas un texte vide comme un 0 et crache une exception. Si ce n'est pas ça, mets un point d'arrêt a la ligne ou ça plante pour voir à quelle valeur exactement ça ne marche pas.

    (N'hésite pas à utiliser des balises quand tu postes du code, c'est plus pratique pour le lire)

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 25
    Par défaut
    Merci Pixel je vais continuer à chercher.
    Non je n'ai pas de texte vide en revanche pour les valeurs à 0 j'ai mis 0 et cela s'affiche bien dans mes labels.
    ok pour les balises je ferai ça la prochaine fois.
    Je vais tester avec le point d’arrêt et je te dis ça ;-)

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 25
    Par défaut
    Bon j'ai trouvé une autre solution :-) car rien n'y fait !

    J'ai donc déclaré 4 int (note1, note2....) au chargement de la form et je les utilisent pour sauvegarder l'index de mes liste dans chaque boucle comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     for (int k = 0; k < scorePerso.Count; k++)
                {
                    // Affiche le score dans le label correspondant 
                    lblScorePerso.Text = scorePerso[index].ToString();
                    // Affiche l'image dans le pictureBox correspondante
                    pictureBox1.Image = imgPerso[index];
                    // capture de l'index de la note 
                    note1 = scorePerso[index];
     
                }
    Puis j'effectue mon calcul à l'aide d'un bouton qui effectue l'addition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void btnValider_Click(object sender, EventArgs e)
            {
                //Affichage du score total
                noteTotale = note1 + note2 + note3 + note4;
                txtNote.Text = noteTotale.ToString();
            }
    Et la sa fonctionne très bien mais je me serai bien passé du bouton lol !!!

    Bonne journée à tous et encore merci Pixel pour m'avoir mis sur la voie.

    Bye ;-)

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/05/2016, 21h58
  2. [Débutant] System.FormatException: Le format de la chaîne d'entrée est incorrect
    Par white_mind dans le forum ASP.NET
    Réponses: 1
    Dernier message: 30/08/2013, 21h28
  3. Le format de la chaîne d'entrée est incorrect.
    Par badi3a82 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 21/10/2010, 12h07
  4. Réponses: 2
    Dernier message: 12/02/2009, 09h59
  5. [C#] [1.1] Le format de la chaîne d'entrée est incorrect
    Par Sup@Lou dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/08/2006, 10h01

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