Lehens
Messages postés3Date d'inscriptionmercredi 13 novembre 2013StatutMembreDernière intervention13 novembre 2013
-
Modifié par Lehens le 13/11/2013 à 18:52
Lehens
Messages postés3Date d'inscriptionmercredi 13 novembre 2013StatutMembreDernière intervention13 novembre 2013
-
13 nov. 2013 à 22:20
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.
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024159 13 nov. 2013 à 19:19
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és3Date d'inscriptionmercredi 13 novembre 2013StatutMembreDernière intervention13 novembre 2013 13 nov. 2013 à 20:44
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és15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024159 13 nov. 2013 à 21:03
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és3Date d'inscriptionmercredi 13 novembre 2013StatutMembreDernière intervention13 novembre 2013 13 nov. 2013 à 22:20
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.
13 nov. 2013 à 20:44
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)
ou
(en achat)
(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 :
13 nov. 2013 à 21:03
"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.
13 nov. 2013 à 22:20
Mon programme marche maintenant, merci pour cette fonction (Single.TryParse) bien utile.