Probleme d'ajout dans une liste vb

Résolu/Fermé
ayumie Messages postés 14 Date d'inscription vendredi 8 février 2013 Statut Membre Dernière intervention 16 avril 2015 - 5 déc. 2014 à 23:12
ayumie Messages postés 14 Date d'inscription vendredi 8 février 2013 Statut Membre Dernière intervention 16 avril 2015 - 6 déc. 2014 à 00:10
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

NHenry Messages postés 15156 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 29 septembre 2024 335
Modifié par NHenry le 5/12/2014 à 23:22
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 vendredi 8 février 2013 Statut Membre Dernière intervention 16 avril 2015
5 déc. 2014 à 23:38
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 15156 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 29 septembre 2024 335
5 déc. 2014 à 23:49
"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 vendredi 8 février 2013 Statut Membre Dernière intervention 16 avril 2015 > NHenry Messages postés 15156 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 29 septembre 2024
5 déc. 2014 à 23:52
le tableau de caractères.
0
NHenry Messages postés 15156 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 29 septembre 2024 335
6 déc. 2014 à 00:01
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 vendredi 8 février 2013 Statut Membre Dernière intervention 16 avril 2015 > NHenry Messages postés 15156 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 29 septembre 2024
6 déc. 2014 à 00:10
MERCI pour tous ça marche très bien ^_^ avec (suc.Add(mat.ToArray)) bonne continuation
0