[R] Sauvegarde d'un Array

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
chandragon
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 16 avr. 2008 01:10
Status : Hors ligne

[R] Sauvegarde d'un Array

#1

Message par chandragon »

Bonjour, voici mon premier post ici :D
J'ai cherché longtemps la réponse à mon probleme, sur ce forum et dans le tuto de Autoit et je n'ai rien trouvé. C'est pourquoi je vous expose mon problème:
J'essaies de créer une sauvegarde rapide et rapidement lisible d'un Array avec une combinaison des fonctions _FileWriteFromArray et _FileReadToArray, le problème étant que la première créé un fichier texte avec la 1e ligne blanche et une valeur par ligne:
a,b,c,d,e,f,g ==> 1e ligne vide, a, b, c, d, e, f, g
et la 2e lit un fichier texte et donne un Array avec en première valeur le nombre de lignes, en 2e la 1e ligne ... etc:
1e ligne vide, a, b, c, d, e, f, g ==> 8, ,a,b,c,d,e,f,g
Le but est de se ramener à a,b,c,d,e,f,g
J'ai donc écrit ce petit code:

Code : Tout sélectionner

Dim $Arr
Dim $B
#include <Array.au3>
$Arr=_ArrayCreate("a","b","c","d","e","f","g")
#include <File.au3>
_FileWriteFromArray ( "C:\Documents and Settings\expo 2\Mes documents\Test\test.txt", $Arr )
;~ Là on a sauvegardé l'array, maintenant on veut l'extraire:
#include <File.au3>
_FileReadToArray ( "C:\Documents and Settings\expo 2\Mes documents\Test\test.txt", $Arr )
$n=$Arr[0]-1
For $i=0 to $n
    $o=$i+2
    $B[$i]=$Arr[$o]
Next
$Arr=$B
#include <Array.au3>
_ArrayDisplay ($Arr)
Et là à chaque fois ça me donne:
Subscript used with non-Array variable.:
$B[$i]=$Arr[$o]
$B^ ERROR

Aidez-moi à comprendre svp
merci
Modifié en dernier par chandragon le jeu. 17 avr. 2008 15:26, modifié 1 fois.
Avatar du membre
tofu
Niveau 3
Niveau 3
Messages : 30
Enregistré le : mar. 15 avr. 2008 14:48
Status : Hors ligne

Re: [..] Sauvegarde d'un Array

#2

Message par tofu »

Tu as déclaré les variables $Arr et $B .

Par la suite, grâce à la fonction _ArrayCreate(), tu définis que $Arr est un tableau.

Seulement à aucun moment tu ne définis ta variable $B comme étant un tableau d'où l'erreur à priori.

Un autre point, dans ta boucle for, il est généralement pas très agréable d'incrémenter une variable en prenant comme référence une autre variable etc. (au niveau de la lisibilité on se perd vite)

En remaniant un peu ton code je suis arrivé à:

Code : Tout sélectionner

Dim $Arr

#include <Array.au3>
#include <File.au3>

$Arr=_ArrayCreate("a","b","c","d","e","f","g")

_FileWriteFromArray ( "C:\test.txt", $Arr )
_FileReadToArray ( "C:\test.txt", $Arr )

$n=$Arr[0] ; taille du tableau

Dim $B[$n-1] ; on définit $B avec une case de moins

$o = 0 ; on part de zero pour l'incrémentation des cases de $B

For $i=2 to $n ; on part de 2 (troisième case) jusqu'à $n pour l'incrémentation des cases de $Arr
    $B[$o]=$Arr[$i]
    $o = $o +1
Next

_ArrayDisplay ($B)
A priori, de cette façon ça doit fonctionner, tout du moins le résultat que j'obtiens me paraît être correct.

Remarque: J'ai supprimé les doublons dans les "#include <fichier.au3>", je suppose qu'ils étaient là car au départ tu utilises des fichiers séparés donc il faudra penser à les remettre correctement. D'autre part j'ai changé le path pour me facilité la tâche de test donc ne pas oublier de reprendre le chemin qui te conviendra.
L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
chandragon
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 16 avr. 2008 01:10
Status : Hors ligne

Re: [..] Sauvegarde d'un Array

#3

Message par chandragon »

Ah ok, j'ai compri d'où venait mon erreur :D
Merci beaucoup !
Répondre