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

Windows Forms Discussion :

Où sont les erreurs ?


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Points : 29
    Points
    29
    Par défaut Où sont les erreurs ?
    Aidez moi s'il vous plait, j'ai fait 2 jours entrain de chercher les erreurs logiques et de compilations au niveau de la procédure ci dessous.

    La procédure permet seulement de faire entrer des valeurs dans une structure sommet lorsque l'utilisateur clique sur le bouton OK.

    Voici ma logique. J'ai crée une structure nommée sommet, en voici sa définition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Structure Sommet
            Dim nom As String
            Dim nbrePred As Integer
            Dim valEtiq As Integer
            Dim etiq As Integer
            Dim tabPred() As String
            Dim tabPond() As Integer  
    End Structure
    J'ai crée ensuite un tableau de cette structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim tabSommet() As Sommet
    J'ai déclaré une variable qui va lire la longueur de ce tableau de structure sommet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim nbreSommet as integer
    J'ai déclarée deux variables pour parcourir le tableau de structure et les deux tableaux tabPred et tabPond
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim compteur as integer
    Dim i as integer
    Les voici mes codes
    Code : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Private Sub Button1_Click(...) Handles Button1.Click
            Dim i As Integer
            Dim compteur as integer
            Dim tabSommet() As Sommet
            Dim nbreSommet as integer
     
            If nbreSommet = 0 Then
                nbreSommet = TextBox1.Text
                ReDim tabSommet(nbreSommet - 1)
                compteur = 0
            End If
     
            tabSommet(compteur).nom = TextBox2.Text
            tabSommet(compteur).nbrePred = TextBox3.Text
            tabSommet(compteur).valEtiq = 0
            tabSommet(compteur).etiq = compteur + 1
     
            For i = 0 To TextBox3.Text - 1
                tabSommet(compteur) = New Sommet
                tabSommet(compteur).tabPred(i) = InputBox("Introduire les Predecesseurs")        
        	    tabSommet(compteur).tabPond(i) = InputBox("Introduire les ponderations")
    	Next i 
     
    	compteur = compteur + 1
    	TextBox2.Text = vbNullString
            TextBox3.Text = vbNullString   
            TextBox2.Focus()
            compteur = compteur + 1       
    End sub
    Mais lorsque je l'execute, ce message apparait: "La référence d'objet n'est pas définie à une instance d'un objet."

    Comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Bonjour,

    Je pense que c'est à cause des tableaux tabPred et tabPond de tabSommet, ils ont comme valeur "Nothing".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tabSommet(compteur).tabPred(i) = InputBox("Introduire les Predecesseurs") 
    tabSommet(compteur).tabPond(i) = InputBox("Introduire les ponderations")
    Il faut peut être les assigner des valeurs avant de les utiliser, tu lui donne un index alors que le tableau est null reference.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  3. #3
    Membre actif Avatar de yroubag
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 224
    Points
    224
    Par défaut
    Salut

    Redouane a raison concernant les instanciations de tableaux. Également, côté logique il y a un problème, ta variable "compteur" va toujours être 0 à l'entrée de la sub puisqu'elle est déclarée localement. Et tu peux aussi optimiser le début comme suis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim tabSommet() As Sommet
            Dim nbreSommet as integer
     
            If nbreSommet = 0 Then
                nbreSommet = TextBox1.Text
                ReDim tabSommet(nbreSommet - 1)
                compteur = 0
            End If
    par celà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Dim nbreSommet as integer = TextBox1.Text
            Dim tabSommet(nbreSommet - 1)
    Par défaut, un integer est toujours à 0, donc inutile de le vérifier.
    Yroubag
    Bien poser les questions, c’est tout un art.
    Où tout dépend, bien sûr, de la réponse que l’on veut obtenir. -André Frossard

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Points : 29
    Points
    29
    Par défaut
    Bonjours

    Je vais inspecter mes codes pour voir vos remarques

    Merci de votre bonne foi

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Points : 29
    Points
    29
    Par défaut
    Bonjours

    Mais alors comment et à quel endroit assigner des valeurs à ces tableaux tabPred et tabPond de tabsommet

    Merci

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ton code manque de logique et tu manques de connaissances => http://plasserre.developpez.com/cours/vb-net/
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 69
    Points : 29
    Points
    29
    Par défaut
    Bonjours

    Mon probleme est seulement comment ecrire du code pour creer un tableau

    de cette structure sommet et stocker ainsi les valeurs dans ce tableau de structure :

    Structure Sommet

    Dim nom As String
    Dim nbrePred As Integer
    Dim tabPred() As String
    Dim tabPond() As Integer

    End Structure

    Utilisant textbox1.text pour lire sommet.nom

    Utilisant textbox2.text pour lire sommet.nbrePred

    Utilisant inputbox pour lire sommet.tabPred() et sommet.tabPond()

    Aidez moi seulement avec ces codes

    Merci d'avance

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ton code est pas cohérent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     For i = 0 To TextBox3.Text - 1
                tabSommet(compteur) = New Sommet
    ici tu vas "instancier" 3x pour rien, sachant qu'en plus tu l'utilisais avant (pour ca d'ailleurs que les structures c'est pas top)

    ca sert à rien qu'on t'aide sur un point sachant que ton code va peter de partout de toute facon et que tu vas pas comprendre pourquoi ca marche pas

    sur les 20 lignes que t'as posté, y a une bonne dizaine de conneries ou de choses qui sont à éviter


    on n'apprend pas le code de la route sur la route au fur et à mesure qu'on avance !!
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Réponses: 116
    Dernier message: 15/02/2010, 10h50
  2. Réponses: 7
    Dernier message: 18/12/2009, 15h43
  3. Express 2008>>ou sont les erreurs?
    Par ProgVal dans le forum Visual C++
    Réponses: 1
    Dernier message: 01/04/2008, 23h16
  4. [TASM] Quelles sont les erreurs dans ce programme ?
    Par S.H dans le forum x86 16-bits
    Réponses: 7
    Dernier message: 25/12/2007, 22h05
  5. quels sont les possibilitées???
    Par lolo-d dans le forum OpenGL
    Réponses: 11
    Dernier message: 16/05/2002, 00h41

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