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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Bubule
Niveau 4
Niveau 4
Messages : 55
Enregistré le : mer. 27 mai 2009 11:40
Status : Hors ligne

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

#1

Message 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 :!:
Modifié en dernier par Bubule le dim. 25 oct. 2009 10:01, modifié 1 fois.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

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

#2

Message 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
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Bubule
Niveau 4
Niveau 4
Messages : 55
Enregistré le : mer. 27 mai 2009 11:40
Status : Hors ligne

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

#3

Message 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 !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

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

#4

Message par orax »

Je dirais plutôt Dim $liste_des_dossiers2[$liste_des_dossiers[0] + 1][5]
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
Bubule
Niveau 4
Niveau 4
Messages : 55
Enregistré le : mer. 27 mai 2009 11:40
Status : Hors ligne

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

#5

Message par Bubule »

Merci mais, pourquoi faut-il ajouter 1 à chaque dimension ?
J'ai trouvé une autre solution, merci tout de même :)
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

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

#6

Message 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]
...
 
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Bubule
Niveau 4
Niveau 4
Messages : 55
Enregistré le : mer. 27 mai 2009 11:40
Status : Hors ligne

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

#7

Message par Bubule »

Effectivement... j'ai compris, eh bien, merci ! :D
Répondre