Mon souci de textbox est revennu ........

Résolu
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 14 mars 2011 à 12:03
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 21 mars 2011 à 19:22
Select Case Math.Abs(nombre)
                   Case 0.0# To 1.0#
                        Q1.Text = "0,00"
                        Q2.Text = "0,00"
                        EPSILON1.Text = "0,00"
                        EPSILON2.Text = "0.00"
                        QP.Text = ((Double.Parse(Q.Text.Replace(".", ","))).ToString("0.00"))
                        TSF.Text = (((TS10.Text) * (Q1.Text)) + ((TS01.Text) * (QP.Text))).ToString("0.00")
                    Case 1.01 To 1.09
                        Q1.Text = "0,10"
                        Q2.Text = "0,10"
                        EPSILON1.Text = "-0,31"
                        EPSILON2.Text = "-0,31"
                        QP.Text = ((Double.Parse(Q.Text)) + Double.Parse(Q1.Text.Replace(".", ","))).ToString("0.00")
                        TSF.Text = (((TS10.Text) * (Q1.Text)) + ((TS01.Text) * (QP.Text))).ToString("0.00")
                    Case 1.1 To 1.19
                        Q1.Text = "0,20"
                        Q2.Text = "0,20"
                        EPSILON1.Text = "-0,45"
                        EPSILON2.Text = "-0,45"
                        QP.Text = ((Double.Parse(Q.Text)) + Double.Parse(Q1.Text.Replace(".", ","))).ToString("0.00")
                        TSF.Text = (((TS10.Text) * (Q1.Text)) + ((TS01.Text) * (QP.Text))).ToString("0.00")
.
.
.


Explication de mon probleme :
- Pour toutes les valeurs comprises entre 0.00 et -1.00, on a les valeurs Q1,Q2,EPSILON1 et EPSILON2 fixées a 0.00
- QP est la différence entre la valeur choisie dans la listbox (Q.Text) et la valeur Q1 (qui n'est plus nulle entre -1.00 et -2.00)
- TSF est la valeur finale cherchée et tient compte de deux autres valeurs (TS10 et TS01)définies plus haut dans le code

Hormis TSF, toutes lez valeurs se calculent correctement quelle que soit la valeur choisie dans la listbox(Q)

En ce qui concerne TSF voici ce qui se passe :
- Entre -1.00 et -2.00, pas de problème de calcul
- Entre 0.00 et -1.00, aucun affichage de valeur dans la textbox, donc dans le premier case.

Ps : ravaillant en valeurs absolues, ce n'est a priori pas un probleme de signe. Je me demandais si ce n'etait pas un souci de double.parse mais je ne vois pas lequel

Je suis perdu j'avoue. Auriez vous une idée ?

Merci

31 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
16 mars 2011 à 19:43
le mieux serait si tu pouvais envoyer ton
projet avec megaupload par ex
http://www.megaupload.com/

comme ça je peux voir exactement
je n'ai pas le vb2010 mais vb2008
3
Utilisateur anonyme
14 mars 2011 à 14:15
Bonjour,
1 - Commence par mettre l'option Strict sur On dans les propriétés de compilation de ton projet.
Ceci te révèlera les erreurs de conversion de ton code.

2 - La classe Convert devrait être plus appropriée pour convertir tes données.

3 - Points et virgules ne font pas bon ménage
EPSILON1.Text = "0,00"
EPSILON2.Text = "0.00"

Bonne soirée.
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
14 mars 2011 à 14:25
Salut Banana32,
J'ai remis la virgule a la plce du point et active strict dans mes proprietes de compilations du projet. Le probleme reste le même, aucun affichage entre 0.00 et -1.00, bon fonctionnement entre -1.00 et -2.00
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
14 mars 2011 à 14:27
Salut

Ou était il passé
en jettant un coup oeil
ce n'est pas clair

QP est la différence entre la valeur choisie dans la listbox (Q.Text) et la valeur Q1 (qui n'est plus nulle entre -1.00 et -2.00)


dans ton code
QP.Text = ((Double.Parse(Q.Text)) + Double
une différence c'est avec le signe -
et aussi
EPSILON2.Text = "0.00" ça serait plutot
EPSILON2.Text = "0,00"

et à ton problème
je te conseille de lancer le prog avec le debogger
met un point d'arret à Case 0.0# To 1.0#
et après continue pas à pas (touche F8) et verifie les valeurs TS10.Text qp.text etc...
0

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

Posez votre question
Utilisateur anonyme
14 mars 2011 à 15:10
En se servant de la classe Convert on obtient ceci :
            Case 0.0# To 1.0#
                Q1.Text = "0,00"
                Q2.Text = "0,00"
                EPSILON1.Text = "0,00"
                EPSILON2.Text = "0,00"
                QP.Text = Convert.ToDouble(Q.Text).ToString("0.00")
                TSF.Text = ( _
                                (Convert.ToDouble(TS10.Text) * Convert.ToDouble(Q1.Text)) + _
                                (Convert.ToDouble(TS01.Text) * Convert.ToDouble(QP.Text)) _
                           ).ToString("0.00")
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
14 mars 2011 à 15:29
lol je peux pas, il m'est impossible de lancer l'appli en mode deboggage dans la mesure ou le gestionnaire de tâches me bloque l'accés me disant que l'application est deja utilisée, ce qui est faux car je n'ai cucun process qui tourne, que ce soi avec le gestionnaire de taches ou avec mon utilitaire de visualisation des process en cours ....
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
14 mars 2011 à 15:30
oups, tu es en avance d'un post ... je regarde ce que tu proposes
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
14 mars 2011 à 15:40
bon ben ... toujours pareil, aucune valeur affichée jusqu'à -1.01, après c'est bon. Je sens que je vais tourner bourrique la .....
0
Utilisateur anonyme
14 mars 2011 à 16:08
C'est certain que sans utiliser le pas à pas tu n'ira pas loin.
Tente de régler ce problème de point d'arrêt.
Ce serait bien de nous indiquer les valeurs de chaque TextBox (TS...)

J'ai testé chez moi avec -0.2 pour nombre, 0.1 pour TS01 et 0.2 pour TS10 et j'obtiens 0.05 pour tsf avec l'exemple cité plus haut.

Je suppose que nombre est déclaré en Double au fait ?

Salut ShayW
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
14 mars 2011 à 16:13
lol je peux pas, il m'est impossible de lancer l'appli en mode deboggage


vraiment bizarre pas normal

Tu ne peux pas mettre un point d'arret(F9)
à la ligne Case 0.0# To 1.0#
et après lance le progr il va s'arreter à la ligne
0
Utilisateur anonyme
14 mars 2011 à 16:16
Tu te sers d'une multiplication par 0 dans le calcul de tsf puisque tu met Q1 à zéro dans ta condition.
A mon avis c'est inutile non ?
Tu peux donc résumer TSF à multiplier TS01 par QP (qui est Q).
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
14 mars 2011 à 16:19
Salut Banana
ça va ? tu ne prépares pas un truc intéressant
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
14 mars 2011 à 16:36
Ben le point d'arret c pas un prob, le prob est de lancer le logiciel. Je dois a chaque fois generer le projet sinon tout plante direct. Je ne peux pas, par exemple, lancer le logiciel depuis l'interface de vb.net avec la petite fleche verte, ni même faire de "pas à pas"
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
14 mars 2011 à 16:38
j'ai bien sur deja essaye, pour l'intervalle 0.00; -1.00 de ne pas mettre la multiplication par 0, cela n'a rien changé du tout
0
Utilisateur anonyme
14 mars 2011 à 16:56
il m'est impossible de lancer l'appli en mode deboggage dans la mesure ou le gestionnaire de tâches me bloque l'accés me disant que l'application est deja utilisée, ce qui est faux car je n'ai cucun process qui tourne

Cela se produit uniquement avec ce projet ou avec tous ?
Sinon nettoie ton dossier debug (aide toi de unlocker) ou recommence ton projet ailleurs.
0
Profil bloqué
14 mars 2011 à 18:10
Salut Attila54

Déjà ton code peut se simplifier ainsi
Pour chaque Case on remplit les TextBox Q1, Q2 , Epsilon1 et Epsilon2

Après le End Select des différents Case on fait un test sue la valeur de nombre en valeur absolue
Si <= 1 on est dans Case 0 to 1
Sinon on est dans tous les autres Case et dans ce cas on retrouve les mêmes calculs Pour QP et TSF

Autre chose : les TextBox sont à utilisées pour afficher des résultats ou des saisies : elles ne sont pas là pour effectuer des calculs. Utilise des variables numériques intermédiaires pour faire les calculs et ensuite tu affiches dans les TextBox le résultat de ces calculs

Select Case Math.Abs(nombre)
                   Case 0 To 1
                        Q1.Text = "0,00"
                        Q2.Text = "0,00"
                        EPSILON1.Text = "0,00"
                        EPSILON2.Text = "0.00"
                   Case 1.01 To 1.09
                        Q1.Text = "0,10"
                        Q2.Text = "0,10"
                        EPSILON1.Text = "-0,31"
                        EPSILON2.Text = "-0,31"
                   Case 1.1 To 1.19
                        Q1.Text = "0,20"
                        Q2.Text = "0,20"
                        EPSILON1.Text = "-0,45"
                        EPSILON2.Text = "-0,45"
                  Case .........

               End Select
               If nombre <= 1 then        
                   QP.Text = Q.Text  ' valeur sélectionnée dans la listbox
               Else
                   QP.Text = ((Double.Parse(Q.Text)) + Double.Parse(Q1.Text.Replace(".", ","))).ToString("0.00")
               End If
               TSF.Text = (((TS10.Text) * (Q1.Text)) + ((TS01.Text) * (QP.Text))).ToString("0.00")


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
14 mars 2011 à 20:48
Salut Galain,
Je viens de tester ton code qui effectivement est très propre, eh bien idem ...... aucune valeur affichée dans TSF entre 0.00 et -1.00
Ce que je ne comprends pas, c'est pourquoi par exemple a -1.00, TSF ne se calcule pas, et a 1.01, il se calcule sans problème.
Se pourrait il que cela vienne des étages "supérieurs du code ?"
Je n'ai pas de problème avec Q et QP par contre, c'est juste avec TSF que ca coince
Merci
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
14 mars 2011 à 21:26
quand tu dis aucune valeur dans tsf
tsf est ""
comme tu n'as pas de debugger alors essaie comme
ça
Try
    double.Parse(TS10.Text)
    Catch ex As Exception
    MessageBox.Show(ex.Message)   
 End Try
Try
    double.Parse(TS01.Text)
    Catch ex As Exception
    MessageBox.Show(ex.Message)   
 End Try
Try
    double.Parse(Q1.Text)
    Catch ex As Exception
    MessageBox.Show(ex.Message)   
 End Try
Try
    double.Parse(QP.Text)
    Catch ex As Exception
    MessageBox.Show(ex.Message)   
 End Try


TSF.Text = (((TS10.Text) * (Q1.Text)) + ((TS01.Text) * (QP.Text))).ToString("0.00")
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
15 mars 2011 à 08:07
oui c'est bien ca, mon textbox TSF est "" jusqu'à -1.00 compris, après, il se remplit correctemet
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
15 mars 2011 à 11:29
bon, j'ai finalement reussi a lancer le debugger
j'ai donc mis un point d'arret a 0.00; -1.00
J'ai lancé l'appli depuis VB.NET avec la fleche verte
je suis arrivé au point d'arret et la ............ rien de rien
Je reste dans des valeurs < -1.00, le debugger ne bouge pas
Je passe au dessus de -1.00 (par exemple -1.32) ==> la ligne marquée (0.00 à -0.00) le point d'arret repasse en jaune et l'application se bloque
0
Rejoignez-nous