Compteur de résultats Autoit dans un while

Résolu/Fermé
Fontainard Messages postés 68 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 24 janvier 2017 - Modifié par Fontainard le 13/02/2015 à 14:03
Fontainard Messages postés 68 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 24 janvier 2017 - 13 févr. 2015 à 14:08
Bonjour,
J'ai récupéré un petit script Autoit, qui arrive à déceler grâce à StringInStr sur quelles lignes se trouvent une chaine de caractère dans un fichier.
Néanmoins, je veux aller plus loin... j'aimerais rajouter une condition à partir du moment ou cette chaine de caractère se retrouve sur deux lignes différente (et qui par exemple m'afficherait pour l'instant un Msgbox("Attention la chaine de caractère a été décelé &nb fois dans le fichier").
Je cherche à incrémenter une variable qui permet de voir, dans ma boucle, le nombre de répétition de la chaine, et c'est là que ça pose problème.
Débutant avec se langage, j'ai forcément un peu de mal, je vous remercie donc par avance pour votre aide!


$NomFichier = "nom.txt" ; le nom du fichier a parcourir
$ChaineRecherchee = "nom"
$Resultat = "Les chaines de caractères sont sur le ou les lignes suivantes : "&@CRLF
$Trouve = 1
$i=1 ; le compteur de lignes

$Fichier = FileOpen($NomFichier, 0) ; on ouvre le fichier
If $Fichier = -1 Then ; Vérification que le fichier est correctement ouvert
MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier")
Exit
EndIf

While 1 ; Et on parcoure le fichier...
$ligne = FileReadLine($Fichier) ; ... en lisant chaque ligne...
If @error = -1 Then ; ... jusqu'a la fin...
ExitLoop
Else
If StringInStr($ligne,$ChaineRecherchee, 2) <> 0 Then ; Si on trouve la chaine a chercher dans la ligne
$Resultat = $Resultat & $i & ", " ; ... on l'inscrit dans les résultats ...
$Trouve = 1 ;... et on précise qu'on a trouvé
EndIf
$i = $i + 1 ; On incrémente le compteur de ligne
EndIf

Wend

FileClose($NomFichier) ; on n'oublie pas de fermer le fichier

if $Trouve = 1 Then;
msgbox(0,"Résultat",StringTrimRight($Resultat,2));
Else ;
MsgBox(0,"Résultat","Aucune tâche en cours d'éxécution")
EndIf
A voir également:

1 réponse

Fontainard Messages postés 68 Date d'inscription dimanche 16 mars 2014 Statut Membre Dernière intervention 24 janvier 2017
Modifié par Fontainard le 13/02/2015 à 14:09
T'es un boulet Fontainard, pourtant c'est hyper simple ! ^^


$doublon = 0

...

$Resultat = $Resultat & $i & ", " ; ... on l'inscrit dans les résultats ...
$Trouve = 1 ;
$doublon = $doublon + 1

...

if $Trouve = 1 Then;
msgbox(0,"Résultat",StringTrimRight($Resultat,2));
Elseif $doublon > 1 Then
msgbox(0,"Alerte","Répétition de la chaine"& $doublon" fois.")
Else
MsgBox(0,"Résultat","Aucune tâche en cours d'éxécution")
EndIf
0