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 :

String to Double Parsing Error (DateTime exception se lance O_o)


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 52
    Points : 37
    Points
    37
    Par défaut String to Double Parsing Error (DateTime exception se lance O_o)
    Salut, j'ai un problème au niveau de conversion d'un String en Double .. voici mon 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
     while (cp < nbr)
                {
                    Matiere m = new Matiere();
                    m.name = nameTxt.Text;
                    m.coef =Double.Parse(coefTxt.Text);
                    m.vol_h = Double.Parse(volTxt.Text);
                    m.importance = Convert.ToInt32(impSlider.Value);
                    schedule.addDiscipline(m);
                    cp++;
                    nameTxt.Text = "";
                    coefTxt.Text= "";
                    volTxt.Text= "";
                    impSlider.Value = 0;
                    if (nbr == cp)
                        NavigationService.Navigate(new Uri("/Result.xaml", UriKind.Relative));
                }
    m.coef = Double.Parse(coefTxt.Text) génère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Une exception de type 'System.FormatException' s'est produite dans mscorlib.ni.dll mais n'a pas été gérée dans le code utilisateur
    avec un message d'aide indiquant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lors de la conversion d'une chaine en objet DateTime, analysez la chaine pour prendre la date avant de placer chaque variable dans l'objet DateTime

  2. #2
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Salut,

    Si tu regarde la doc msdn sur la méthode Double.Parse, tu peux voir la raison d'une FormatException:
    s does not represent a number in a valid format.
    Peut-etre que tu utilise un point au lieu d'une virgule? ou l'inverse?

    Tu peux surcharger la méthode avec un parametre NumberStyles. Jettes-y un coup d'oeil..

    PS: Je suis tombé sur ton autre post "Liste générique" et j'ai essayé d'y répondre. Si le problème est résolu, n'oublie pas de cliquer sur le bouton résolu. Ça indiquera aux autres personnes que ton problème est.. résolu
    J’ai des questions à toutes vos réponses!

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 52
    Points : 37
    Points
    37
    Par défaut
    j'ai utilisé les styles dont vous m'avez dit mais le problème persiste encore .. j'arrive pas à comprendre d'où vient l'exception de la conversion de la chaine en DateTime pourtant je l'ai pas utilisé !!

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Points : 359
    Points
    359
    Par défaut
    Peux tu nous mettre la valeur de ta variable quand ça crash ?
    "Une belle citation est un diamant au doigt de l'homme d'esprit et un caillou dans la main d'un sot."
    Joseph Roux

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Qatar

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2012
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    salut,
    j'ai déjà rencontré un problème semblable. Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    m.coef = Convert.ToDouble(coefTxt.Text); 
    // ou 
    m.coef = (Double) coefTxt.Text;

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Comme le subodore morgand, la valeur entrée n'est pas convertible en Double.
    Et comme le dit -N4w4k- , exemple 12.25 en Culture Fr ne passera pas.

    Pour le savoir, testez dans un premier temps, la valeur du TextBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                double number;
     
                if (Double.TryParse(coefTxt.Text, out number))
                    m.coef = Double.Parse(coefTxt.Text);
                else
                    MessageBox.Show("Entrée invalide");
    Quant à "l'exception de la conversion de la chaine en DateTime", cela semble être le premier texte préétabli renvoyé en conseil d'aide, donc à prendre avec circonspection.

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Points : 359
    Points
    359
    Par défaut
    Je pense que tu as mis à jour ton poste car je me souviens pas du code que je viens de lire.

    Mais tu sais :
    Donc si tu ne rentres pas de valeur dans ta TextBox tu auras une erreur, et c'est normale.

    Déjà, personnellement je pense que la bonne pratique c'est ce qu'a dit chrismonoye, avec le TryParse, cela évite d'avoir une exception qui te saute à la tête.
    Mais tu peux avoir deux situations dans ton cas :
    • string.Empty
    • Valeur de culture différente de ta culture de parse de double


    Pour ce qui est du string vide, c'est simple tu peux faire :
    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
     
    double number;
    if(string.IsNullOrEmpty(coefTxt.Text))
    {
        // Action comme mise d'une valuer par default etc.
        number = 1; // COmme c'est un coef ... c'est la valeur null
    }
    else if(double.TryParse(coefTxt.Text, out number))
    {
     
    }
    else 
    {
         // Tu peux rechercher la bonne culture, tu peux faire autre chose afficher un message etc.
    }
    Bon maintenant à toi

    Ah oui autre chose, tu peux mettre une valeur par défaut à ton TextBox ce qui permettra d'éviter certain problème
    "Une belle citation est un diamant au doigt de l'homme d'esprit et un caillou dans la main d'un sot."
    Joseph Roux

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/03/2011, 14h09
  2. Error 80020009. Exception occurred
    Par twizell dans le forum ASP
    Réponses: 5
    Dernier message: 14/04/2005, 20h35
  3. Parse error
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 02/02/2005, 10h55
  4. conversion String en Date (parse trop permissif)
    Par ciloulou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/09/2004, 18h36
  5. String -> long double (_strlold ?)
    Par haypo dans le forum C
    Réponses: 7
    Dernier message: 25/07/2002, 20h22

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