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

VB.NET Discussion :

Je m'emmele dans les conversions et ca mine mon projet [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut Je m'emmele dans les conversions et ca mine mon projet
    Bonjour,
    Ayant eu des souci dans les conversions sur un formulaire de calcul, que je n'arrive toujours pas a resoudre, j'ai crée un simple form sur un projet different et j'ai toujours le meme souci. Probleme de conversion entre string, doubles, etc .....

    un code tout simple

    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
    39
    40
    Public Class QICalcul
     
        Private valA As String
        Private valB As String
        Private valC As String
     
    'lancement du formulaire
    Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub
     
    ' A à le focus, son textbox est vide et son fond est pourpre. J'entre une valeur à la main comprise entre 42.00 et 50.00 (en tapant "," comme  separateur) 
    Private Sub A_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles A.GotFocus
            A.Text = ""
            A.BackColor = Color.Purple
    End Sub
     
    ' A perd le focus, son textbox contient la valeur entree precedemment et son fond passe en LightSlateGray. 
    Private Sub A_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles A.LostFocus
            A.BackColor = Color.LightSlateGray
            End Sub
     
    ' B à le focus, son textbox est vide et son fond est pourpre. J'entre une valeur à la main comprise entre 42.00 et 50.00 (en tapant "," comme  separateur) 
    Private Sub B_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles B.GotFocus
            B.Text = ""
            B.BackColor = Color.Purple
    End Sub
     
    ' B perd le focus, son textbox contient la valeur entree precedemment et son fond passe en LightSlateGray. 
    Private Sub B_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles B.LostFocus
            B.BackColor = Color.LightSlateGray
    End Sub
     
    ' Je clique sur le bouton calculer, j'obtiens la valeur C = -4 [1 - (b/a)^2]
    Private Sub Calculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Calculate.Click
    valA = Convert.ToDouble(A.Text)
       valB = Convert.ToDouble(B.Text)
       valQICALCULE = Convert.ToDouble(QICALCULE.Text)
       QICALCULE.Text = -4 * (1 - ((B.Text / A.Text)^2))
    End Sub
    End Class
    sauf que rien ne fonctionne dans le calcul de C
    Le mode debug me dit
    Le format de la chaîne d'entrée est incorrect.
    pour valA = Convert.ToDouble(A.Text) - Idem pour ValB et rien ne s'affiche dans C

    Si j'enlève
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    valA = Convert.ToDouble(A.Text)
    valB = Convert.ToDouble(B.Text)
    Le debug ne me dit rien du tout et rien ne s'affiche dans C

    Vraiment j'ai un souci de compréhension avec les convert.
    Pourris je avoir une petite aide ?
    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 209
    Par défaut
    un breakpoint pour afficher le contenu de A.Text
    Je pense que ta chaine est vide et donc impossible à caster
    Pour eviter le problème utiliser Double.TryParse()

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    Merci du conseil mais j'avoue ne pas bien comprendre ou je le mets mon Double.TryParse()
    J'ai fait un peu de VB6 il y a quelque temps mais le vb.net est bien plus rigoureux et j'ai de mauvaises habitudes ......

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 209
    Par défaut
    en regardant ton code je capte rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private valA As String
    
    ...
    valA = Convert.ToDouble(A.Text)
    Convertir un string en double pour le stocker dans un string

    bon si valA est censer être un double alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private valA As Double
    et dans ta methode Calculate_Click
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(Not Double.TryParse(A.Text,valA)) 
    {
    MessageBox.Show("Erreur : ValA n'est pas un Double!!!")
    Exit Sub
    }
    ...

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 128
    Par défaut
    tout d'abord t'a déclaré tes valA, valB et valC en string
    et puis tu demande qui te les donne en double
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    valA = Convert.ToDouble(A.Text)
       valB = Convert.ToDouble(B.Text)
    à ta place je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim valA, valB, valC as double
    et puis je ferais

    enfin, je ne vois pas c'est quoi ça
    KCP.Text / KC.Text

    Que représente KCP et KC

    j'espère que KC ne peut être = 0 (ça va déclancher une exception: division par 0)

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 209
    Par défaut
    Il faut aller dans les Outil->Options->Projet & Solution->VB default:
    Option Explicit On
    Option Strict On

  7. #7
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    RE Getule

    Si je dim valA, valB, valC en double et qu'après je fais
    valA = Cdbl(A.text) j'ai une erreur de type
    cdb n'est pas déclaré et peut être inaccessible en raison de son niveau de protection
    La conversion de la chaîne "42.85" (en l'occurence ici ValA) en type 'Double' n'est pas valide.
    Idem pour B

    Pour les valeurs de A et B elle doivent être entrées à la main et comprises entre +42,00 et +50,00 donc a deux decimales

    Pour KCP et KP c'est une erreur de ma part, en fait initialement KC = A et KCP = B et j'ai oublié de substituer dans le code, j'edite avec le bon code

  8. #8
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    explicit et strict sont deja toutes les deux sur on c'est aussi pour cela que c'est plus difficile mais je prefere du code plus propre

  9. #9
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 128
    Par défaut
    au lieu de Cdbl, fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valA=Convert.ToDouble(A.Text)

  10. #10
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    bon alors maintenant j'ai le bon resultat affiche, sauf que :
    - il faut que je clique 2 fois sur le bouton calcul
    la premiere fois il m'affiche "0"
    la seconde il m'affiche le bon calcul

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

Discussions similaires

  1. Réponses: 45
    Dernier message: 23/07/2015, 21h00
  2. Récupérer les noms des classes de mon projet
    Par abdoutleti dans le forum Général Java
    Réponses: 10
    Dernier message: 10/03/2011, 13h17
  3. conversion de couleur dans les différents espaces
    Par karas.uchiwa dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 16/12/2009, 10h53
  4. Conversion dans les 3 bases & heure binaire
    Par Mic** dans le forum Contribuez
    Réponses: 1
    Dernier message: 30/11/2008, 18h17

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