[R] Comment récuperer les deux premiers mot d'un fichier ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Ekow
Niveau 4
Niveau 4
Messages : 58
Enregistré le : sam. 11 déc. 2010 14:40
Status : Hors ligne

[R] Comment récuperer les deux premiers mot d'un fichier ?

#1

Message par Ekow »

Bonjour à tous !
Mon programme doit écrire des données dans un fichier texte et lorsque celui ci est fermer puis relancer je souhaiterais récupérer les deux premiers mots de chaque ligne et les affichés dans une liste box.
Voici ma fonction :

Code : Tout sélectionner

Func Compilator()
    $init = FileOpen(@ScriptDir & "\test.txt", 0)
    Do
        FileReadLine($init)
        GUICtrlSetData($List1, $init)
    Until @error
    FileClose($init)
EndFunc
Donc pour vous expliquez en quelques mots : Je déclare une variable nommé $init qui lui ouvre le fichier en questions ensuite dans la boucle "Do" , il lit chaque ligne du fichier puis grâce à la commande GuiCtrlSetData j'envoie les données.
C'est ma façon d'interpréter cette fonction ^^

Le résultat n'est pas du tout celui souhaiter. Lorsque je relance le programme il affiche en boucle le chiffre 1 (je ne sait pas d'où il vient) et le programme se bloque.
J'aimerais donc savoir comment récupérer les deux premiers mot de ce fichier et l'afficher dans cette liste sans aucun soucis. Je suppose que vous avez comprit que ce fichier texte jouera le rôle de petite base de données.

Voila ! Merci d'avance.
Cordialement Ekow
Modifié en dernier par Ekow le jeu. 09 juin 2011 21:46, modifié 1 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: [..] Comment récuperer les deux premiers mot d'un fichie

#2

Message par mikell »

Et le fichier d'aide alors ? à quoi il sert ? :wink:

Code : Tout sélectionner

$file = FileOpen("test.txt", 0)

While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    $mots = StringSplit($line, " ")   ;<== si les mots sont séparés par 1 espace
    $2premiersmots = $mots[1] & " " & $mots[2]
    GUICtrlSetData($List1, GuiCtrlRead($List1) & "|" & $2premiersmots)
  Wend

FileClose($file)
 
à fignoler évidemment...
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Comment récuperer les deux premiers mot d'un fichie

#3

Message par zeshrek »

Moi je prefere directement ca (plus compact, j'ai du mal...) :

Code : Tout sélectionner

Func Compilator()
    $file = FileOpen("test.txt", 0)
    While 1
        $line = FileReadLine($file)
        If @error = -1 Then ExitLoop
        If $line <> "" Then GUICtrlSetData($List1, StringLeft($line, StringInStr($line & "  ", " ", 0, 2)) & "|")
    WEnd
    FileClose($file)
EndFunc
En gros on si la ligne est pas vide, on ajoute 2 espaces a la fin (ca sert a éviter les erreurs) puis on prend tous les caracteres en partant de la gauche jusqu'au 2eme espace. Et on ajoute un 'pipe' a la fin parceque on alimente une liste.
Si vis pacem para bellum
Avatar du membre
Ekow
Niveau 4
Niveau 4
Messages : 58
Enregistré le : sam. 11 déc. 2010 14:40
Status : Hors ligne

Re: [..] Comment récuperer les deux premiers mot d'un fichie

#4

Message par Ekow »

@Zeshrek
--------> Ton code fonctionne mais j'ai encore un problème. Les mots s'affiche bien mais au lieu de s'afficher une fois, il s'affiche à l'infini. (J'ai essayer d'enlever la boucle while mais cela n'a rien changer)
Et l'affichage commence de bas en haut et pas de haut en bas c'est bizarre...
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Comment récuperer les deux premiers mot d'un fichie

#5

Message par mikell »

Et mon code, il merdoie aussi ? :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Ekow
Niveau 4
Niveau 4
Messages : 58
Enregistré le : sam. 11 déc. 2010 14:40
Status : Hors ligne

Re: [..] Comment récuperer les deux premiers mot d'un fichie

#6

Message par Ekow »

Oui il a le même problème =/
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Comment récuperer les deux premiers mot d'un fichie

#7

Message par zeshrek »

Bin, mon code je l'ai testé, et il marche, du coup, je vois pas trop cette histoire de bouclage infini. De toutes facon, quand il arrive a la fin du fichier, @error est initialisé, et donc le exitloop fait sortir de la boucle.
Pour ce qui concerne l'ordre d'affichage, je crois que tu n'as pas lu la doc. Les lists ont par défaut le style $LBS_SORT, dont je te laisse prendre connaissance du role...
Bref, je vois pas ou ca peut bugger.
Ou alors donne nous ton fichier texte, et ton code complet au lieu du simple extrait, y a p'tet une interraction ailleurs...
Si vis pacem para bellum
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Comment récuperer les deux premiers mot d'un fichie

#8

Message par mikell »

T'aurais pas mis ta fonction Compilator() dans une boucle par hasard ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Ekow
Niveau 4
Niveau 4
Messages : 58
Enregistré le : sam. 11 déc. 2010 14:40
Status : Hors ligne

Re: [..] Comment récuperer les deux premiers mot d'un fichie

#9

Message par Ekow »

Haha c'est bon ! Sa fonctionne mais j'ai fait une petite boulette je l'ai effectivement mit dans une boucle.
Bon la y a encore quelque petit bug mais je pense pouvoir les corrigés sans trop de problème ;)
Si je ne vous fournit pas le code source c'est pour la simple est bonne raison que je souhaite régler mes problèmes sans trop d'aide.
J'aime qu'on me met sur la voie mais pas qu'on fait le travail à ma place. :wink:

Grâce à vous j'ai apprit une nouvelle chose et maintenant il ne me reste plus qu'a m'habituer à cette technique pour régler les petits bugs rencontrer lié à mon programme.

Merci beaucoup et bonne soirée
Répondre