[R]Erreur Array variable has incorrect number....

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
pins38
Niveau 2
Niveau 2
Messages : 18
Enregistré le : mer. 24 déc. 2008 12:01
Status : Hors ligne

[R]Erreur Array variable has incorrect number....

#1

Message par pins38 »

Bonsoir,

Depuis ce matin, je galère avec cette erreur (connue) mais que je n'arrive pas à supprimer.
J'ai un fichier de 23 lignes contenant sue chaque ligne deux valeurs séparées par #.
Lorsque je split ce fichier pour obtenir les deux valeurs en question, j'obtiens cette fameuse erreur sue la deuxième valeur.
J'ai essayé de rajouter le séparateur en fin de ligne ==> NOK, déclarer les dimensions du tableau ==> NOK !!!!! :?:

voici l'extrait du code en question :

Code : Tout sélectionner

$File0 = FileOpen (@ScriptDir & "\Part.txt", 0)
While 1
    $Str = StringSplit (FileReadLine ($File0), "#")
    $Serv = $Str [1]
    $Part = $Str [2]
    If @error = -1 Then ExitLoop
    ConsoleWrite ($Serv & $Part & "-")
WEnd
 
Ainsi que le fichier de départ :

Merci de votre aide précieuse.
Fichiers joints
Part.txt
fichier à "spliter"
(207 Octets) Téléchargé 72 fois
Modifié en dernier par pins38 le lun. 21 févr. 2011 19:53, modifié 1 fois.
Cordialement.
Philippe.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..]Erreur Array variable has incorrect number....

#2

Message par jchd »

Parvenant à la fin de fichier, l'erreur se produit sur FileReadLine et c'est là qu'il faut faire le test.
Ensuite StringSplit produit aussi une erreur, mais tu ne la teste pas plus.

La suite "$Serv = $Str [1]" n'a pas de sens car $Str n'est pas une array, d'où l'arrêt du script dans un grand fracas.

_FileReadToArray serait plus approprié, suivi d'une boucle For avec les bons paramètres (UBound par exemple) contenant le StringSplit. Et là, pfft, plus d'erreur.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..]Erreur Array variable has incorrect number....

#3

Message par Tlem »

Grillé par jchd.

Mais je vais expliquer l'erreur d'une autre manière. ;)
En fait, la ligne If @error = -1 Then ExitLoop de votre code ne test pas la fin du fichier, car vous avez intégré la lecture des lignes dans la fonction StringSplit. Or la variable @error est ré-initialisée pour chaque fonction, donc vous ne pourrez jamais dans votre cas tester la fin du fichier.

Pour cela vous devez séparer la lecture des lignes de la commande StringSplit, en prenant soins de tester @error juste après la lecture des lignes. ;)

Après, d'après ce que je comprend, vous supprimez le caractère # de chaque ligne car il vous gêne. Dans ce cas, lisez la totalité du fichier, puis effectuez une StringRegExpReplace. Ce sera surement plus efficace et plus rapide. ;)

Edit : Voilà vite fait :
► Afficher le texte
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pins38
Niveau 2
Niveau 2
Messages : 18
Enregistré le : mer. 24 déc. 2008 12:01
Status : Hors ligne

Re: [..]Erreur Array variable has incorrect number....

#4

Message par pins38 »

Bonsoir,

Problème résolu grâce à vous.

Merci.
Cordialement.
Philippe.
Répondre