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 :

tableau a longueur non defini


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 116
    Points : 78
    Points
    78
    Par défaut tableau a longueur non defini
    Bonjour,

    j'ai un tableau mod_ligne qui na pas de taille fixe
    Je rajoute une ligne a chaque modification mais le probleme est que lors de mon tri des articles VS me dis : "La référence d'objet n'est pas définie à une instance d'un objet."

    je vous passe le bout de code :

    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
     
    'Déclaration de mon tableau
    Dim mod_ligne() As String
    'test si il existe des ligne et si oui alors rentré dans la boucle
    Dim val As Integer
        While (reader.Read())
             If mod_ligne.Length <> 0 Then
                  For val = 1 To mod_ligne.Length
                       If reader.GetValue(5) <> mod_ligne(val) Then
                           Dim rows As String() = New String() {reader.GetString(3), reader.GetString(1), reader.GetString(2), reader.GetString(0)}
                           mat_res.Rows.Add(rows)
                       End If
                  Next
             End If
        End While

  2. #2
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Salut
    A mon avis le problème vient de la déclaration de ton tableau. Je m'explique: le 1er item de ton tableau c'est tab(0) ou tab(1) (je dis cela car par defaut ce doit etre 0 mais il me semble qu'il est possible de faire debuter l'iteration a 1); ensuite tu fais ta boucle de 1 a tab.length() ce qui fera planter forcement ta boucle si le premier item du tableau est 0 (tab.length() - 1).
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 58
    Points
    58
    Par défaut
    Tu déclare ton tableau mais il est vide, il faut qu'à un moment donné tu lui définisse une taille.
    Tu peux utilisé ReDim pour re-dimensionner ton tableau en fonction de tes besoins
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim mod_ligne() As String
     
    ReDim mod_ligne(dimension de ton tableau)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 116
    Points : 78
    Points
    78
    Par défaut
    Citation Envoyé par DiamonDonald Voir le message
    Tu déclare ton tableau mais il est vide, il faut qu'à un moment donné tu lui définisse une taille.
    Tu peux utilisé ReDim pour re-dimensionner ton tableau en fonction de tes besoins
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim mod_ligne() As String
     
    ReDim mod_ligne(dimension de ton tableau)
    je suis d'accord avec toi, le probleme est que mon tableau je le rempli lors d'une action sur un bouton, et le test se fait sur le form.load

    comment verifié si mon tableau est vide ?

    le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If mod_ligne.Length > 0 Then

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 113
    Points : 58
    Points
    58
    Par défaut
    je suis d'accord avec toi, le probleme est que mon tableau je le rempli lors d'une action sur un bouton, et le test se fait sur le form.load
    Ok autant pour moi

    Quand tu utilise le débugger, ton tableau est correctement rempli?

    le liens suivant te seras peu être utile...
    http://plasserre.developpez.com/v1-6tab.htm

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 116
    Points : 78
    Points
    78
    Par défaut
    au depart le tableau et vide mais il se rempli en allant

  7. #7
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Pourquoi ne pas passer par une collection générique ? Du genre List(Of String).
    C'est bien plus flexible.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 116
    Points : 78
    Points
    78
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Pourquoi ne pas passer par une collection générique ? Du genre List(Of String).
    C'est bien plus flexible.
    salut, je ne connais pas pourrais-tu me fournir un lien vers un tutorial STP ?

    merci a tous pour votre aide

  9. #9
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Directement de la MSDN :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    Imports System
    Imports System.Collections.Generic
     
    Public Class Example
     
        Public Shared Sub Main()
     
            Dim dinosaurs As New List(Of String)
     
            Console.WriteLine(vbLf & "Capacity: {0}", dinosaurs.Capacity)
     
            dinosaurs.Add("Tyrannosaurus")
            dinosaurs.Add("Amargasaurus")
            dinosaurs.Add("Mamenchisaurus")
            dinosaurs.Add("Deinonychus")
            dinosaurs.Add("Compsognathus")
     
            Console.WriteLine()
            For Each dinosaur As String In dinosaurs
                Console.WriteLine(dinosaur)
            Next
     
            Console.WriteLine(vbLf & "Capacity: {0}", dinosaurs.Capacity)
            Console.WriteLine("Count: {0}", dinosaurs.Count)
     
            Console.WriteLine(vbLf & "Contains(""Deinonychus""): {0}", _
                dinosaurs.Contains("Deinonychus"))
     
            Console.WriteLine(vbLf & "Insert(2, ""Compsognathus"")")
            dinosaurs.Insert(2, "Compsognathus")
     
            Console.WriteLine()
            For Each dinosaur As String In dinosaurs
                Console.WriteLine(dinosaur)
            Next
     
            Console.WriteLine(vbLf & "dinosaurs(3): {0}", dinosaurs(3))
     
            Console.WriteLine(vbLf & "Remove(""Compsognathus"")")
            dinosaurs.Remove("Compsognathus")
     
            Console.WriteLine()
            For Each dinosaur As String In dinosaurs
                Console.WriteLine(dinosaur)
            Next
     
            dinosaurs.TrimExcess()
            Console.WriteLine(vbLf & "TrimExcess()")
            Console.WriteLine("Capacity: {0}", dinosaurs.Capacity)
            Console.WriteLine("Count: {0}", dinosaurs.Count)
     
            dinosaurs.Clear()
            Console.WriteLine(vbLf & "Clear()")
            Console.WriteLine("Capacity: {0}", dinosaurs.Capacity)
            Console.WriteLine("Count: {0}", dinosaurs.Count)
        End Sub
    End Class
     
    ' This code example produces the following output:
    '
    'Capacity: 0
    '
    'Tyrannosaurus
    'Amargasaurus
    'Mamenchisaurus
    'Deinonychus
    'Compsognathus
    '
    'Capacity: 8
    'Count: 5
    '
    'Contains("Deinonychus"): True
    '
    'Insert(2, "Compsognathus")
    '
    'Tyrannosaurus
    'Amargasaurus
    'Compsognathus
    'Mamenchisaurus
    'Deinonychus
    'Compsognathus
    '
    'dinosaurs(3): Mamenchisaurus
    '
    'Remove("Compsognathus")
    '
    'Tyrannosaurus
    'Amargasaurus
    'Mamenchisaurus
    'Deinonychus
    'Compsognathus
    '
    'TrimExcess()
    'Capacity: 5
    'Count: 5
    '
    'Clear()
    'Capacity: 5
    'Count: 0
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 116
    Points : 78
    Points
    78
    Par défaut
    merci pour ton aide sympa

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. LONGUEUR NON VALIDE POUR UN TABLEAU DE CARACTERE base64
    Par fad2013 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/12/2013, 15h52
  2. UCase : Fonction non définie
    Par tane dans le forum IHM
    Réponses: 5
    Dernier message: 12/06/2006, 20h57
  3. Réponses: 2
    Dernier message: 16/05/2006, 14h44
  4. Réponses: 7
    Dernier message: 19/01/2006, 19h57
  5. [VBA] MsgBox non definie
    Par coco21 dans le forum Access
    Réponses: 3
    Dernier message: 15/12/2005, 11h05

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