Problème de Variable à Virgule [Résolu]

Messages postés
3
Date d'inscription
mercredi 13 novembre 2013
Dernière intervention
13 novembre 2013
-
Bonjour,
J'ai voulu créer un programme pour gérer mon argent de poche pour mes achats mais j'ai un problème sur les chiffres à virgule qui sont refusés alors que j'ai pourtant vu plusieurs tutoriels mais je n'y arrive pas.


la partie du code posant problème :
If RadioButton2.Checked = True Then
            Dim fileread As New StreamReader("C:\Gestionnaire Argent\saves\arge.txt", True)
            Dim v1 As Double
            Dim v2 As Double
            Dim v3 As Double

            v1 = fileread.ReadLine()
            v2 = TextBox4.Text
            v3 = v1 + v2
            fileread.Close()

            Dim filewrite As New StreamWriter("C:\Gestionnaire Argent\saves\arge.txt", False)
            filewrite.Write(v3)
            filewrite.Close()

        End If


Comme vous le voyez, je manipule les fichiers textes (.txt) dans mon programme : je récupère v1 du fichier texte puis j'y ajoute la valeur du TextBox4 pour la renvoyer dans le fichier texte que j'écrase et recréé avant.

Avec des nombres entiers cela marche mais pas avec des nombres à virgule.

J'aimerai que l'on m'explique, où j'aurais pu faire une erreur et si possible me montrer une correction.

Je précise que:
-J'utilise Microsoft Visual Basic 2010 Express
-Je suis un débutant dans ce langage
-Ce bout de code existe en 2 exemplaires dans mon programme avec pour seul différence :
"v3 = v1 + v2" qui est remplacé par "v3 = v1 - v2"
-Si vous voulez le reste du code, vous pouvez me le demandez.

Merci d'avoir pris le temps de me lire, j'attends vos réponses.
Afficher la suite 

Votre réponse

1 réponse

Messages postés
14383
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
10 février 2019
153
0
Merci
Bonsoir,

En VB.NET pensez à activer "Option Explicit" et "Option Strict"

Ensuite, il s'agit souvent d'un problème de "," ou ".", regardes dans les surcharges de Double.Parse par exemple.
Lehens
Messages postés
3
Date d'inscription
mercredi 13 novembre 2013
Dernière intervention
13 novembre 2013
-
Bonsoir,
Merci d'avoir répondu assez vite,

En activant l'option Strict (l'autre étant déjà active), j'ai eu un paquet
d'erreur que j'ai corrigé mais le problème reste.

Sinon, pour les variables de type Double, je n'en ai que 6 disposées par groupe de 3, j'ai déjà essayé avec des Singles mais le résultat est le même.
L'erreur affiché en Débogage est la suivante :

L'exception InvalidCastException n'a pas été gérée
-La conversion de la chaîne "13.69" en type 'Double' n'est pas valide.

(13.69 étant un exemple de nombre avec virgule)
Cette erreur me montre la ligne :

(en ajout)
v2 = CDbl(TextBox4.Text)

ou
(en achat)
v2 = CDbl(TextBox1.Text)


(CDbl( ) étant une correction apporté après avoir activé le mode Strict.)

J'attends d'autres solutions.

En attendant voici le second exemplaire de cette partie de code avec les corrections du mode Strict :

If RadioButton1.Checked = True Then
            


            Dim fileread As New StreamReader("C:\Gestionnaire Argent\saves\arge.txt")
            Dim v1 As Double, v2 As Double, v3 As Double

            v1 = CDbl(fileread.ReadLine())
            v2 = CDbl(TextBox1.Text)
            v3 = v1 - v2
            fileread.Close()

            Dim filewrite2 As New StreamWriter("C:\Gestionnaire Argent\saves\arge.txt", False)
            filewrite2.Write(v3)
            filewrite2.Close()
        End If
NHenry
Messages postés
14383
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
10 février 2019
153 -
Dans ton message :
"La conversion de la chaîne "13.69" en type 'Double' n'est pas valide. "
Dans le mien :
"il s'agit souvent d'un problème de "," ou ".""

Essayes d'utiliser Double.TryParse et String.Replace.
Lehens
Messages postés
3
Date d'inscription
mercredi 13 novembre 2013
Dernière intervention
13 novembre 2013
-
Après quelque recherche sur le Double.TryParse, je me suis rendu compte qu'un Single suffisait et que j'utilisais "TextBox1.ReadOnly" au lieu de "TextBox1.Text".

Mon programme marche maintenant, merci pour cette fonction (Single.TryParse) bien utile.
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.