IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Variable utilisé avant d’être affecté


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut Variable utilisé avant d’être affecté
    Bonjour , j'ai ce message d'erreur que j'ai traduit de l'anglais : Variable utilisé avant d’être affecté
    Ce n'est pas vraiment une erreur car mon programme fonctionne mais la variable "msg_admin_objet" est souligné en vert avec le message ci dessus :
    voila l'extrait de mon programme, je ne comprend pas comment je pourrais faire pour ne pas avoir cette erreur !

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    For Each ligne As String In TextBox1.Text.Split(ControlChars.NewLine) 'pour chaque ligne de la textbox je sépare les caractéres
     
                    'objet
                    Dim debut_obj As Integer = TextBox1.Text.IndexOf("Objet : ") + 8
                    Dim fin_obj As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_obj)
                    Dim longeur_obj As Integer = fin_obj - debut_obj
                    msg_admin_objet = TextBox1.Text.Substring(debut_obj, longeur_obj)
                Next
     
     
                'enregistrement du message administratif dans la base de donnée
                Dim MyNewRow As DataRow = dst_admin.Tables("administratif").NewRow
     
                MyNewRow("numero") = msg_admin_num
                MyNewRow("date") = msg_admin_date
                MyNewRow("heure") = msg_admin_heure
     
                'Le problème est ici
                MyNewRow("objet") = msg_admin_objet

  2. #2
    Invité
    Invité(e)
    Par défaut
    C'est normal tu utilise la variable "msg_admin_objet" avant de la déclarer.

    A la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msg_admin_objet = TextBox1.Text.Substring(debut_obj, longeur_obj)
    ecrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim msg_admin_objet As String = TextBox1.Text.Substring(debut_obj, longeur_obj)

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    c'est un avertissement de visual studio, pas forcément une erreur
    quand on déclare une variable il n'y a rien dedans
    si on l'utilise après sans rien ca peut etre un comportement anormal, si dans ton code tu es sur qu'une valeur sera bien dedans au moment de l'utilisation il n'y a pas de soucis à laisser en l'état

    après modifier des variables dans une boucle sans les utiliser ca me parait plus étrange mais vs ne fait pas d'avertissements pour ca ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    S'il n'y a rien dans TextBox1, tu ne vas pas rentrer dans la boucle, et donc msg_admin_objet ne sera pas initialisé et vaudra Nothing

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    Oui je comprend, mais en faite j'extrait des données d'une textbox, de facon a ce que je separe les chaines de caractére par les espaces pour extraire celle qui m'intéresses situé dérriére un libelle par exemple "Origine" et "Objet" dans le cas ci dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    For Each ligne As String In TextBox1.Text.Split(ControlChars.NewLine) 'pour chaque ligne de la textbox je sépare les caractéres
                    'origine 
                    Dim debut_org As Integer = TextBox1.Text.IndexOf("Origine : ") + 10
                    Dim fin_org As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_org)
                    Dim longeur_org As Integer = fin_org - debut_org
                    msg_admin_origine = TextBox1.Text.Substring(debut_org, longeur_org)
                    'objet
                    Dim debut_obj As Integer = TextBox1.Text.IndexOf("Objet : ") + 8
                    Dim fin_obj As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_obj)
                    Dim longeur_obj As Integer = fin_obj - debut_obj
                    msg_admin_objet = TextBox1.Text.Substring(debut_obj, longeur_obj)
                Next
    et après une fois que j'ai les valeurs, (ps: elle seront toujours là) je les enregistre dans ma base de données mysql avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                Dim MyNewRow As DataRow = dst_admin.Tables("administratif").NewRow
     
     
                MyNewRow("origine") = msg_admin_origine
                MyNewRow("objet") = msg_admin_objet
                dst_admin.Tables("administratif").Rows.Add(MyNewRow)
     
                Dim MyCommBuild As New MySqlCommandBuilder(da_admin)
                da_admin.Update(dst_admin, "administratif")
    le probléme est si je suis ce que ma dit gcorbineau les deux variables crée dans le ne sont pas visible pour mon insertion dans la base de donnée, alors comment bien faire ?

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    laisse ton code en l'état et ignore l'avertissement
    si tu veux réellement supprimer l'avertissement sur la déclaration de ta variable tu rajoutes = nothing derrière

    par contre si tu nous n'as pas omis de code dans le copier coller vers le forum, ce code reste étrange
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Modifications de variable déclarées avant
    Par FotoXe33 dans le forum Langage
    Réponses: 6
    Dernier message: 11/07/2009, 00h23
  2. Variable demande avant requete
    Par backdraf dans le forum Développement
    Réponses: 8
    Dernier message: 11/05/2009, 18h36
  3. Réponses: 5
    Dernier message: 04/04/2008, 19h40
  4. Réponses: 6
    Dernier message: 09/01/2008, 17h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo