Je ne comprends pas...

Futuya Messages postés 9 Date d'inscription jeudi 27 octobre 2011 Statut Membre Dernière intervention 20 novembre 2011 - 29 oct. 2011 à 21:59
Futuya Messages postés 9 Date d'inscription jeudi 27 octobre 2011 Statut Membre Dernière intervention 20 novembre 2011 - 29 oct. 2011 à 22:57
Bonsoir !
Alors en programmant un petit peu, j'ai voulu tester une formule mathématique assez simple :
- Distance = Vitesse divisé par le Temps, mais, le problème c'est que j'obtiens sa :


Voici mon code :
Public Class D_V_T


Private Sub
V_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles V.TextChanged
End Sub

Private Sub
T_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles T.TextChanged
End Sub

Private Sub
Label1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.TextChanged Label1.Text = V.Text / T.Text
End Sub

End Class

5 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
29 oct. 2011 à 22:36
Salut

que veux tu faire ?
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
29 oct. 2011 à 22:42
Simple :
1) tu essaies de convertir une chaine vide ("") en integer et forcément ça ne passe pas
Il vaudrait mieux utiliser

    Private Sub Label1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.TextChanged
        'On prévoit deux variables décimales pour accueillir les valeurs numériques de V et T
        Dim nbreV As Single
        Dim nbreT As Single
        'Single.TryParse(V.Text,nbreV) renvoie True si V est est un nombre (dans ce cas sa valeur numérique est mise dans nbreV)
        'Single.TryParse(V.Text,nbreV) renvoie False si V n'est pas un nombre (chaine vide par exemple ou chaine="toto)
        If Single.TryParse(V.text, nbreV) True And Single.TryParse(T.text, nbreT) True Then
            'Prévoir de traiter une erreur possible dans la division (exemple : division par zéro)
            Try
                Label1.Text = (nbreV / nbreT).ToString
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End If
    End Sub


2) Autre erreur la procédure Label.textChanged se produit 2 fois : une fois quand on la change (premier appel) et une autre fois quand elle s'est automodifiée par sa propre procédure (division de V par T).
Ce n'est pas trop logique et on doit certainement pouvoir faire autrement.
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
29 oct. 2011 à 22:46
Oups j'avais pas tout lu.
Tu souhaites une conversion en Double et non en Integer ou en Single.
Ca ne change pas grand chose au problème ni à sa solution (remplacer juste Single par Double)
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
29 oct. 2011 à 22:48
Bonjour,

Label1.Text = V.Text / T.Text
Tu es sûr de la valeur de tes TextVox ?
Actives Option Strict (propriétés du projet) pour détecter ce genre d'erreur.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Futuya Messages postés 9 Date d'inscription jeudi 27 octobre 2011 Statut Membre Dernière intervention 20 novembre 2011
29 oct. 2011 à 22:57
Ok ! Merci de vos réponses ! J'essayerai cela demain, parce que j'ai eu une longue journée, alors je vous en dirai plus demain matin ! Et pour répondre, je voulais juste simplement diviser la valeur écrite dans V par la valeur écrite dans T pour qu'elle soit afficher dans label1. Eh oui j'ai vérifié elle me semble sûr.
0
Rejoignez-nous