[R] Problèmes avec un boucle (je pense)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
yoyox
Niveau 2
Niveau 2
Messages : 29
Enregistré le : ven. 14 nov. 2014 09:19
Status : Hors ligne

[R] Problèmes avec un boucle (je pense)

#1

Message par yoyox »

Bonjour,

je rencontre actuellement un problèmes sur mon script suite à une boucle
► Afficher le texte
Le script fonctionne parfaitement jusqu'à la ligne en vert, la message box n’apparaît pas, aucune erreur de la part de scite

En revanche si je lance le script après l'avoir compilé, voici ce qui apparait

Error: Subscript used on non-accessible variable.

En gros voici ce que contient le fichier In.txt :
► Afficher le texte
c'est qu'une petite partie du texte (5 ligne), chaque paragraphe affiché sont en une seul ligne dans mon fichier

auriez vous une astuce pour trouver l'erreur ?

J'ai essayé chaque variable et tout à un résultat même $T, ca ne vient donc pas du code mais plutôt d'une erreur de codage de ma part non visible
Modifié en dernier par yoyox le jeu. 13 août 2015 08:02, modifié 2 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problèmes avec un boucle (je pense)

#2

Message par mikell »

Merci de mettre une balise spoiler sur les longs codes/textes

J'ai eu un souci en testant sur le texte tel que posté, _FileReadToArray retourne des lignes vides dans l'array, et If $Search[7] => error
En utilisant un regex à la place

Code : Tout sélectionner

$In = StringRegExp(FileRead(@ScriptDir & "\In.txt"), '\V+', 3)
et en mettant For $i = 0 to... dans les boucles là ça va bien
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
yoyox
Niveau 2
Niveau 2
Messages : 29
Enregistré le : ven. 14 nov. 2014 09:19
Status : Hors ligne

Re: [..] Problèmes avec un boucle (je pense)

#3

Message par yoyox »

Mikell m'a aidé à comprendre

Le problème venait de cette partie

Code : Tout sélectionner

For $i=0 To Ubound($Out) - 1
   $Search = _StringBetween($Out[$i], "\Device\HarddiskVolume5", "   ID du handle")[0]
   $Search = StringRegExp($Search, '(\.[^."]+)$', 3)
   $Search = _ArrayToString($Search)
   If $Search <> ".tmp" Then
      $T += 1
   EndIf
ceci plus précisément : \Device\HarddiskVolume5

Dnas mon texte il n'y avait pas que HarddiskVolume5, il y a aussi des HarddiskVolume3 ce qui faisait planter mon _StringBetween

Voici la correction fournie par mikell :

Code : Tout sélectionner

; Local $debug2
For $i=0 To Ubound($Out) - 1
   $tmp = _StringBetween($Out[$i], "\Device\HarddiskVolume", "ID du handle")
        ; If not IsArray($tmp) Then Msgbox(0,"debug", $Out[$i])  ; error checking
        ; $Search = $tmp[0]
   $Search = StringRegExpReplace($tmp[0], '.*(\.\w+)\h*', "$1")
; $debug2 &= $Search & @crlf
   If $Search <> ".tmp" Then
      $T += 1
   EndIf
Next
; filewrite("debug2.txt", debug2)
Répondre