Page 1 sur 1

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

Posté : dim. 20 févr. 2011 17:51
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.

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

Posté : dim. 20 févr. 2011 18:19
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.

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

Posté : dim. 20 févr. 2011 18:53
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

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

Posté : lun. 21 févr. 2011 19:54
par pins38
Bonsoir,

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

Merci.