Page 1 sur 1

[R] Création d'un(e) Array

Posté : sam. 24 oct. 2009 12:50
par Bubule
Bien le bonjour, c'est encore moi,

J'ai un petite problème avec une création d'Array à 2 dimensions, SciTe m'indique toujours une erreur avec ces lignes de commandes :

Code : Tout sélectionner

$liste_des_dossiers = IniReadSectionNames(@ScriptDir & "\DATA\FOLDER_LIST.INI")
; Ici je lis donc les sections de mon ini
If @error Then
    GUICtrlSetData($dossier, "")
; Si il y a rien, aucune donnée dans le controle
Else
; Sinon, c'est plus compliqué :
    For $i = 1 To $liste_des_dossiers[0]
        $liste_des_dossiers2[$i][1] = $liste_des_dossiers[$i]
; Je place le nom de la section dans l'array de première dimension $i, le "numero" de la section et de deuxièmre dimension 1
; Ensuite, dans la même première dimension, puisque même section, je lis les différentes clés et les placent dans les deuxième dimensions qui suivent ;
        $liste_des_dossiers2[$i][2] = IniRead(@ScriptDir & "\DATA\FOLDER_LIST.INI", $liste_des_dossiers2[$i][1], "ID2", "Non spécifié")
        $liste_des_dossiers2[$i][3] = IniRead(@ScriptDir & "\DATA\FOLDER_LIST.INI", $liste_des_dossiers2[$i][1], "ID3", "Non spécifié")
        $liste_des_dossiers2[$i][4] = IniRead(@ScriptDir & "\DATA\FOLDER_LIST.INI", $liste_des_dossiers2[$i][1], "ID4", "Non spécifié")
    Next
EndIf
Voilà, je sais pas si c'est clair, mais SciTE indique cette erreur :
*:\***\***\***\***.au3 (241) : ==> Expected a "=" operator in assignment statement.:
$liste_des_dossiers2[$i][1] = $liste_des_dossiers[$i]
$liste_des_dossiers2^ ERROR


Merci de m'aider ! :D

P.S. : J'ai lu la documentation (en Anglais) et je n'ai rien trouvé qui puisse m'aider :( (je n'ai peut être pas bien lu) et il est possible que mes histoires de traduction (avec mes "dimensions" ne soient pas très clair).
Désolé et merci quand même :!:

Re: [..] Création d'un(e) Array

Posté : sam. 24 oct. 2009 13:11
par sylvanie
Bonjour,
Si le script est entier, alors vous avez simplement oublier de le déclarer avec Dim et les dimensions adéquates.

au moins Dim $$liste_des_dossiers2[$liste_des_dossiers[0]][4] d'après ce que je vois


point d'utilisation du forum : la colorisation synraxique ne doit pas être utilisée dans cette section. Merci pour la prochaine fois

Re: [..] Création d'un(e) Array

Posté : sam. 24 oct. 2009 14:22
par Bubule
sylvanie a écrit : point d'utilisation du forum : la colorisation synraxique ne doit pas être utilisée dans cette section. Merci pour la prochaine fois
Veuillez m'excuser, je n'ai pas du lire correctement les règles de présentation.

Merci pour la ligne de commande mais cette fois, cela m'indique une erreur dont je pense connaître la source mais que je ne sais pas comment régler.

Merci tout de même !

Re: [..] Création d'un(e) Array

Posté : sam. 24 oct. 2009 22:10
par orax
Je dirais plutôt Dim $liste_des_dossiers2[$liste_des_dossiers[0] + 1][5]

Re: [..] Création d'un(e) Array

Posté : dim. 25 oct. 2009 10:01
par Bubule
Merci mais, pourquoi faut-il ajouter 1 à chaque dimension ?
J'ai trouvé une autre solution, merci tout de même :)

Re: [R] Création d'un(e) Array

Posté : dim. 25 oct. 2009 17:14
par sylvanie
à oui, exacte, que de précipitation dans ma réponse ^^

le +1 viens du fait que dans la boucle :

Code : Tout sélectionner

For $i = 1 To $liste_des_dossiers[0]
        $liste_des_dossiers2[$i][1] = $liste_des_dossiers[$i]
 
on parcours la première dimension de 1 à $liste_des_dossiers[0]
Or, un tableau de dimension N a des indices variant de 0 à N-1

Donc si on veut initialiser jusqu'à $liste_des_dossiers[0], il faut une dimension valant au moins $liste_des_dossiers[0]+1.

Cependant on remarque alors que $liste_des_dossiers2[0][1] ne sert à rien, puisqu'il n'est pas initialisé ni utilisé dans la suite. Donc on a 2 options :
1 - on fait comme on vient de dire et on ne se sert pas de $liste_des_dossiers2[0][1]
2 - on déclare le tableau de dimension $liste_des_dossiers[0] et on change l'initialisation (et la suite du code en retranchant 1 aux indices) :

Code : Tout sélectionner

For $i = 1 To $liste_des_dossiers[0]
        $liste_des_dossiers2[$i-1][1] = $liste_des_dossiers[$i]
...
 

Re: [R] Création d'un(e) Array

Posté : lun. 26 oct. 2009 12:15
par Bubule
Effectivement... j'ai compris, eh bien, merci ! :D