Collection

cs_Emcy Messages postés 42 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 17 juillet 2012 - 25 mars 2005 à 11:23
cimcim Messages postés 31 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 29 juillet 2010 - 4 avril 2005 à 16:53
Bonjours,

j'ai essayé de crée une collection comme ceci :

Dim MaCollection As New Arraylist()
Dim MonTableau(2) As Int16
Dim i As int16

MonTableau(0)=1
MonTableau(1)=2
MonTableau(2)=3
MaCollection.Add(MonTableau)

MonTableau(0)=4
MonTableau(1)=5
MonTableau(2)=6
MaCollection.Add(MonTableau)

Dim Element(2) As Int16 'colorie les zones grises
For Each Element In MaCollection
For i=0 to 2
MessageBox.Show(Element(i))
Next i
Next Element

Le problème est que ça ne marche pas correctement la messagebox m'affiche 4,5,6,4,5,6 au lieu de 1,2,3,4,5,6

une solution ? est-ce un bug ou un problème de code ?

7 réponses

cimcim Messages postés 31 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 29 juillet 2010
4 avril 2005 à 12:11
Je ne suis pas sur, mais est ce que le arrayList ne contient pas des pointeurs (comme en C), et donc contient la valeur de MonTableau(0), MonTableau(1) et MonTableau(2)
essaye avec
dim MaCollection as New Collection, je nne sais plus, mais peut etre que ca contient les valeurs, et non des pointeurs.
0
cs_Emcy Messages postés 42 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 17 juillet 2012
4 avril 2005 à 12:49
le type collection n'est pas défini par défaut en .NET : y a t-il une bibliothèque spécial à charger ?
0
cimcim Messages postés 31 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 29 juillet 2010
4 avril 2005 à 13:41
Alors, la, je ne sais pas. Je suis avec VB6...
Essaye de regarder sur le site de MSDN.
0
cimcim Messages postés 31 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 29 juillet 2010
4 avril 2005 à 15:45
Petite question comme ca...
Si tu regarde exactement ce que tu as dans ton arrayList, tu obtient 2 tableaux, ou 6 entiers ?
tu doix avoir un truc du genre MaCollection.count, je suppose...
Sinon, si tu fais

MonTableau(0)=1
MonTableau(1)=2
MonTableau(2)=3

for i = 0 to 2
MaCollection.add (MonTableau(i)
)
next
MonTableau(0)=4
MonTableau(1)=5
MonTableau(2)=6

for i = 0 to 2
MaCollection.add (MonTableau(i)
)
next

ton show donne quoi ?

Attention, je n'ai pas mon PC aujourd'hui, donc pas de VB, donc y a surement des fautes, car ce n'est pas testé...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Emcy Messages postés 42 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 17 juillet 2012
4 avril 2005 à 15:54
cimcim, ta solution n'est pas viable car tu ajoutes 3x2 éléments à ta collection alors que je n'en voulais que 2.

cette solution fonctionne rentrer tous les elments dans la collection : après pour les resortir, il suffit de faire des for avec des step de 3 => avec cette solution je peux arriver au même resultat mais je voulais savoir pourquoi ça ne marche pas : c'est quand même beaucoup plus lisible de raisonner avec des tableau que de faire cette solution.
0
cs_Emcy Messages postés 42 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 17 juillet 2012
4 avril 2005 à 15:55
cimcim, ta solution n'est pas viable car tu ajoutes 3x2 éléments à ta collection alors que je n'en voulais que 2.

cette solution fonctionne pour rentrer tous les elments dans la collection : après pour les resortir, il suffit de faire des for avec des step de 3 => avec cette solution je peux arriver au même resultat mais je voulais savoir pourquoi ça ne marche pas : c'est quand même beaucoup plus lisible de raisonner avec des tableaux que de faire cette solution.
0
cimcim Messages postés 31 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 29 juillet 2010
4 avril 2005 à 16:53
okay, donc si j'ai bien compris, tu veux que ta collection contienne des tableaux d'entiers, et non des entiers.
Je pense que le problème vient de la. Quand tu fait un add(MonTableau), il doit prendre l'adresse en memoire de ton tableau, et la mettre en lien, donc, quand tu modifie les valeurs de ton tableau, ton adresse memoire ne change pas, à moins de définir un 2e tableau, et le lien pointe sur les nouvelles valeurs.

En fait dans ma solution, je rajoute les élements du tableau 1 par 1, mais en prenant les entiers, et non leur adresse...

Je fait quelque recherche, et je te tiens au courant.
0
Rejoignez-nous