VB 2010

Résolu/Fermé
Signaler
-
 Utilisateur anonyme -
Bonjour,

Shame on me, mais je teste vb2010 express, et je bute sur un truc de débutant, et tellement que cela me parait "c.n", que je me demande s'il ne s'agit pas d'un bug avec W2010.

J'ai un form "form1"
Dedans une textbox "poids"
Et un bouton btn1

Le but sera de manipuler des nombres saisis dans les textbox, mais pour déboguer, j'ai fait au mini, soit textbox et bouton pour lancer mon calcul.

Voici le code du form1

Public Class Form1
    Dim poids As Double

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        MsgBox(Val(poids))

    End Sub

end class


Si je saisis 30 dans le textbox "poids", le msgbox me renvoie 0.

WTF ????

Merci



Quand jimmy dit what'd I say, I love you baby
C'est comme qui dirait, Toute la province qui chante en anglais

4 réponses

Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
310
Lis ma signature pour commencer.

Ensuite, retire l'import automatique de l'espace de nom "Microsoft.VisualBasic" (propriétés du projet => Références)

Par la suite, essayes plutôt :
MessageBox.Show(Int.Parse(Poids.Text))
Salut et merci,

bien lu signature, et voici mon code, réduit encore

Option Explicit On
Option Strict On

Private Sub Button1_Click()

    Dim poids As Double
    MessageBox.Show(Int.Parse(Poids.Text))
End Sub


Pfff pareil, m'affiche un put..n de 0

Par contre je pense que la piste de la référence est la bonne, car dans le débogueur j'ai

Erreur 1 Instruction non valide dans un espace de noms. C:\Users\User\documents\visual studio 2010\Projects\imc\imc\Form1.vb 4 1 imc


Je suis allé voir, mais je ne vois pas cette réf...

Merci en tous cas, en sachant que le but de cette appli n'est pas un "messagebox" mais des calculs.

Ce messagebox me sert juste à déboguer petit à petit, des lignes.

Merci


Quand jimmy dit what'd I say, I love you baby
C'est comme qui dirait, Toute la province qui chante en anglais
Messages postés
16543
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
29 novembre 2021
779
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Ajout de la balise de citation

<block>Texte cité ici</block>

Merci d'y penser dans tes prochains messages.
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
310
Si ta TextBox s'appelle Poids, pourquoi tu redéclares la variable en local avec un type différent ?
Utilisateur anonyme >
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021

Re,

je ne trouve toujours pas cette fichue référence...
Messages postés
16543
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
29 novembre 2021
779
Bonsoir,


Comme le dit NHenry si le textbox et la variable s'appellent pareil ça va pas bien marcher, il me semble (peux pas vérifier là) que Vb ne fait pas de différence avec la casse.

  Dim poids As Double' à ce moment la variable vaut zéro et est de type double
    MessageBox.Show(Int.Parse(Poids.Text))' à ce moment là le compilateur ne sait pas trop quoi prendre.....

Utilisateur anonyme
Merci,
mais je n'ai qu'un seul textbox, dont je veux récupérer la valeur.

J'ai juste donc un contrôle txtbox dont j'ai mis la propriété name à "poids" et un bouton pour tester.

Merci
Messages postés
16543
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
29 novembre 2021
779
J'ai juste donc un contrôle txtbox dont j'ai mis la propriété name à "poids"


oui et tout le problème est là, tu déclares ensuite un variable avec le même nom.
Utilisateur anonyme >
Messages postés
16543
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
29 novembre 2021

Mais je ne déclare rien du tout, je suis bien obligé d'utiliser le name de ma txtbox pour lui demander de m'afficher ma saisie.
Si je retire le 'dim ......' c'est pareil.
Pour info, avec un inputbox, no souci, mais cela ne convient pas.
Je pense que mon souci est dans les propriétés du txtbox "poids", qui n'est pas numérique...
Messages postés
16543
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
29 novembre 2021
779
Certes VB.Net est fortement typé, MAIS le problème ne vient pas de ça, il n'accepte pas deux objets avec le même nom.

Essaye de mettre txtPoids comme nom à ton textbox.
La méthode de classe Parse de la classe Int, sert justement à convertir le string contenu dans propriété Text en Int.

        Dim monInt As Integer

        monInt = Integer.Parse(TextBox1.Text)'ici conversion en int

        MessageBox.Show(monInt.ToString())'ici reconversion en string car la méthode Show prend un string en argument





Toutefois, si tu as tapé "vingt-deux", int.Parse ne trouveras jamais 22, il faut avoir mis "22".
Messages postés
16543
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
29 novembre 2021
779
Par contre pour ce message
Erreur 1 Instruction non valide dans un espace de noms.


Il doit y avoir une instruction qui n'est pas "contenue" dans une Classe ou un enum.

Euréka !!!!!!!!!!!!!

Le code simplissime suivant convient :
Public Class Form1

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim v_poids As Double
        v_poids = Double.Parse(poids.Text)
        MsgBox(v_poids * 3)

    End Sub
End Class


Merci !!