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
A voir également:

2 réponses

NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
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
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
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
"jai une erreur ici"
Quelle erreur ?

Tu veux ajouter quoi à ton "suc" ?
Les caractères ou le tableau de caractères ?
0
ayumie Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   > NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention  
 
le tableau de caractères.
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
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
ayumie Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   > NHenry Messages postés 15219 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