Probleme d'ajout dans une liste vb

Résolu
ayumie Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
ayumie Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -
salut , voila j'ai une arraylist qui a chaque fois je lui ajoute un tableau de caractère mais le dernier élément écrase tous les autre

voila un exemple du code :

Public mat(4) As Char
Public suc As ArrayList
suc = New ArrayList
mat = {"X", "_", "O", "_"}
For i = 0 To 2
suc.Add(mat)
mat(i + 1) = "T"
MessageBox.Show(suc.Item(i))
Next
MessageBox.Show(suc.Item(0))
MessageBox.Show(suc.Item(1))
MessageBox.Show(suc.Item(2))

aidez moi svp merci

2 réponses

  1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    Il aurait été bien de préciser que tu fais un VB.NET, cela évite de penser que c'est du VB6/A.

    Ensuite, à la place de ArrayList, essayes plutôt une List(Of Char()), ce sera plus sûr.

    Pour ton for :
    For i= 0 To 2
    Actives "Option Explicit" et "Option Strict" dans les propriétés de ton projet.

    A la place de mettre des bornes en dur, un :
    For i=0 to mat.GetUpperBound(0)
    serait mieux.
    tu peux aussi utiliser For Each :
    For Each lLine in mat
    lLine contiendra la valeur de ta case de ton tableau.

    Dans ton for, tu fais :
    For i = 0 To 2
        suc.Add(mat)
        mat(i + 1) = "T"
        MessageBox.Show(suc.Item(i))
    Next 


    Tu ajoutes ton tableau à ton ArrayList, puis tu écrase l'item suivant (et non l'item actuel).

    Pour information, les tableaux sont ajoutés en référence, donc modifier le tableau modifie aussi les références ajoutées.
    Essayes d'utiliser :
    suc.Add(mat.ToArray())

    If a Dalek is a being of pure hate...what happens when Cadence uses her love spell on one?
    En VB.NET pensez à activer "Option Explicit" et "Option Strict"
    0
  2. ayumie Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
     
    merci pour la réponse voila j'ai essayer avec
    suc = New List(Of Char())
    mat = {"X", "_", "O", "_"}
            For Each lLine In mat
                suc.Add(lLine) 'jai une erreur ici
                Dim j As Integer = 0
                mat(j + 1) = "T"
                j += 1
                MessageBox.Show(suc.Item(j))
    
            Next
    

    est ce que tu peut m'aidez
    0
    1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      "jai une erreur ici"
      Quelle erreur ?

      Tu veux ajouter quoi à ton "suc" ?
      Les caractères ou le tableau de caractères ?
      0
      1. ayumie Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   > NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention  
         
        le tableau de caractères.
        0
    2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      Dans ce cas, Il faut ajouter ton tableau (avec le ".ToArray()") et utiliser un for classique (avec le GetUpperBound).

      Pour ta variable "j", attention à la portée, la portée que tu lui a mi fait qu'elle est remise à 0 à chaque boucle (car déclarée dans le for).
      0
      1. ayumie Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   > NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention  
         
        MERCI pour tous ça marche très bien ^_^ avec (suc.Add(mat.ToArray)) bonne continuation
        0