Message de Yffic Cloarec date 2007-04-26 21:08 :
Bonjour
Je ne comprends pas bien l'initialisation d'un tableau a 2 dimensions
Dim toto(10,3)
toto = Array( Array("Arm", 0 , 10), _
Array("Aur", 0 , 10), _
Array("Val", 0 , 10), _
Array("Mar", 0 , 10), _
Array("Nic", 0 , 10), _
Array("Flo", 0 , 10), _
Array("Nel", 0 , 10), _
Array("Yff", 0 , 10), _
Array("JM" , 0 , 10), _
Array("Mat", 0 , 10), _
)
titi = toto(0,1) 'Titi vaut le tableau ("Arm",0,10)
Comment acceder directement a "Arm" ?
Bonjour,
C'est effectivement déroutant, mais cela s'explique.
La raison est que tu n'as pas initialisé un tableau à 2 dimensions !
Tu as déclaré un tableau à deux dimensions, puis tu as en fait créé un
tableau de tableaux avec la fonction Array. Ce n'est pas identique en
OOoBasic.
On peut mieux comprendre en utilisant Xray (la version actuelle
distingue mieux les tableaux multidimensionnels et les tableaux de
tableaux).
Tu aurais du déclarer toto en Variant sans dimension.
Avec Xray pour visualiser, cela donne:
Dim toto, titi, tata, tutu(10,3)
toto = Array( Array("Arm", 0 , 10), _
Array("Aur", 0 , 10), _
Array("Val", 0 , 10), _
Array("Mar", 0 , 10), _
Array("Nic", 0 , 10), _
Array("Flo", 0 , 10), _
Array("Nel", 0 , 10), _
Array("Yff", 0 , 10), _
Array("JM" , 0 , 10), _
Array("Mat", 0 , 10), _
)
xray tutu ' tableau multidimensionnel
xray toto ' tableau de tableau
tata = toto(0)
xray tata ' tableau "Arm", 0 , 10
xray tata(0) ' "Arm"
titi = toto(0,12345)
xray titi ' tableau "Arm", 0 , 10
Pourquoi ce résultat sur titi ? Parce que pour un Variant, Basic ignore
les indices inutiles. Lorsque Basic traite toto(0,0) il ne voit qu'un
tableau unidimensionnel. Le fait que chaque élément de ce tableau soit
lui-même un tableau n'est pas pris en compte. Pour accèder à une valeur
dans un tableau de tableau il faut obligatoirement extraire chaque
sous-tableau dans une variable intermédiaire.
Comme expliqué dans le livre Programmation OpenOffice.org 2 page 99, la
fonction Array permet de créer des tableaux irréguliers, pas seulement
des matrices rectangulaires. Ce qui peut expliquer le comportement de
Basic: avec des Variant il doit s'attendre à toutes les bizarreries.
Inversement, avec une variable déclarée tableau multidimensionnel il
n'est pas possible d'extraire d'un coup un sous-tableau. Toute
utilisation de la variable doit comporter tous les indices.
Bernard
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]