Je ne comprends pas...

Signaler
Messages postés
9
Date d'inscription
jeudi 27 octobre 2011
Statut
Membre
Dernière intervention
20 novembre 2011
-
Messages postés
9
Date d'inscription
jeudi 27 octobre 2011
Statut
Membre
Dernière intervention
20 novembre 2011
-
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

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
53
Salut

que veux tu faire ?
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
6
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.
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
6
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)
Messages postés
14833
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 décembre 2021
157
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
Messages postés
9
Date d'inscription
jeudi 27 octobre 2011
Statut
Membre
Dernière intervention
20 novembre 2011

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.