Page 1 sur 2

Liste Imbriqué

MessagePublié: 04 Déc 2009 à 13:08
par Michael DELIQUE
Bonjour

je "m'amuse" a imbriquer des liste histoire de faire des listes a plusieurs dimensions. le probleme c'est pour la récupération des infos pour la acceder a la list dans la liste je suis obligé de passé par un variant

un code d'exemple
Code : Tout sélectionner
   Dim lst List As Variant
   Dim lst1 List As String
   Dim vrvalue As Variant
   Dim i As Integer
   Dim j As Integer
   
   For i = 1 To 100
      lst1(i) = "iiiiiiiiiiiiiiiiiiiiii"
   Next
   
   For j = 1 To 10
      lst(j) = lst1
   Next   
   
   vrvalue = lst(2)
   
   Msgbox Cstr(vrvalue(2))


mais j'aimerais pouvoir le faire en une seule ligne

genre list(0)(0) bien sur ça marche pas !

quelqu'un a une idée ?

MessagePublié: 04 Déc 2009 à 14:11
par AlexandreV
Pas sur que cela soit possible. En tout cas pas sans passer par un variant ou par un tableau.

MessagePublié: 04 Déc 2009 à 14:20
par Michael DELIQUE
c'est bien ce que je suis en train de me dire, j'aurrai aimé eviter de passer par un tableau parceque avec bcp de donné c'est rapidement plein !

MessagePublié: 04 Déc 2009 à 14:45
par Michael DELIQUE
mais si quelqu'un sait comment faire...

MessagePublié: 04 Déc 2009 à 15:01
par AlexandreV
Avec des pointeurs en langage C...

Ok... je sors :)

MessagePublié: 04 Déc 2009 à 15:05
par Michael DELIQUE
SBAFFFF !

MessagePublié: 07 Déc 2009 à 09:52
par abertisch
Salut,

en Java ?!? ou tu es limité au LS ?

MessagePublié: 07 Déc 2009 à 10:12
par Michael DELIQUE
LS !

et pouquoi une liste et pas un array a cause du redim qui bouffe des ressource comme ç'est pas permit ! don c

j'essais de faire une list mutli-dimenssionné

MessagePublié: 07 Déc 2009 à 10:21
par GPE
Pour faire cela j'utilise une liste d'un type contenant une ou plusieurs arrays.
Ce n'est pas parfait car non redimensionnable mais ça marche
Peut etre que ça peut aider.

Public Type DocXref
xLinksStatus(100) As String xLinksTitleStatus(100) As String
....
End Type
Public ListXrefErrorCarrier List As DocXref

MessagePublié: 07 Déc 2009 à 12:29
par Michael DELIQUE
salut

tu récuperes tes valeurs comment ?

MessagePublié: 07 Déc 2009 à 12:37
par GPE
par exemple

For i = 0 To ListXrefErrorCarrier(doc.NoteID).xNbLinks

' Get values from XrefDocCarrier
If ListXrefErrorCarrier(doc.NoteID).xLinksTitleStatus(i) = "Refresh" Then TitleRefreshed =True

J'utilise NoteId comme tag dans la liste.

MessagePublié: 07 Déc 2009 à 12:44
par Michael DELIQUE
bon c'est lundi j'ai Le neurone en marmellade !

tu peut me montre un ocde d'exemple, j'ai du mal a te suivre !

MessagePublié: 07 Déc 2009 à 12:59
par GPE
Difficile d'envoyer la totalité, c'est un ensemble de fonctions qui utilisent ce principe.

Declaration

Public Type DocXref
xNbLinks As Integer
xLinksStatus(100) As String
xLinksTitleStatus(100) As String
xLinksNumberStatus(100) As String
xLinksCurrent(100) As String
xLinksRevised(100) As String
End Type
Public ListXrefErrorCarrier List As DocXref


Set List Item


ListXrefErrorCarrier(doc.NoteID).xNbLinks = IndexDocLink
ListXrefErrorCarrier(doc.NoteID).xLinksStatus(IndexDocLink) = "Remove"
ListXrefErrorCarrier(doc.NoteID).xLinksTitleStatus(IndexDocLink) = "Refresh"
ListXrefErrorCarrier(doc.NoteID).xLinksCurrent(IndexDocLink) = D
ListXrefErrorCarrier(doc.NoteID).xLinksRevised(IndexDocLink) = D


Get Item List


For i = 0 To Cint(ListXrefErrorCarrier(Doc.NoteID).xNbLinks)
xLinksStatus(i) = ListXrefErrorCarrier(Doc.NoteID).xLinksStatus(i)
xLinksCurrent(i) = ListXrefErrorCarrier(Doc.NoteID).xLinksCurrent(i)
xLinksRevised(i) = ListXrefErrorCarrier(Doc.NoteID).xLinksRevised(i)
xLinksTitleStatus (i) = ListXrefErrorCarrier(Doc.NoteID).xLinksTitleStatus(i)
xLinksNumberStatus(i) = ListXrefErrorCarrier(Doc.NoteID).xLinksNumberStatus(i)
Next

MessagePublié: 07 Déc 2009 à 13:02
par Michael DELIQUE
ahhh oui comme ça

le probleme, c'est que le tableau est a taille variable !

vu que c'est al fonction qui va déterminer le nombre d'occurence necessaire pour la deuxieme dimension !

MessagePublié: 07 Déc 2009 à 13:05
par GPE
C'est bien ce que je disais au début:

Ce n'est pas parfait car non redimensionnable


Donc j'ai fixé une limite "raisonnable"