[R] Lecture fichier txt dans GUICtrlCreateList + sauvegarde

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

[R] Lecture fichier txt dans GUICtrlCreateList + sauvegarde

#1

Message par pierrotm777 »

Bonjour,
J'essaie de lire un fichier texte dans une 'GUICtrlCreateList'.
J'ai trouvé sur le forum un petit script qui me semble sympa , que j'ai essayé d'adapter à mon besoin.
Mon problème est qu'il semble que seul la première ligne est lue et répétée.
Je souhaite une mise à jour régulière de la liste ligne par ligne .

Voici donc mon code:
► Afficher le texte
Merci de votre aide par avance
Modifié en dernier par pierrotm777 le jeu. 03 mars 2011 20:06, modifié 2 fois.
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#2

Message par pierrotm777 »

Oops,
j'ai trouvé mon premier problème:

Code : Tout sélectionner

Func DsLogUpdate()
    If $DebugGUIStatus = True Then
        local $line
        $file = FileOpen("c:\dslog2.txt", 0)
[color=#FF0000]     While 1
            $line &= FileReadLine($file) & '|'
            If @error = -1 Then ExitLoop
        WEnd[/color]
        FileClose($file)
        GUICtrlSetData($DebugWindow, $line)
    EndIf
EndFunc
Résolu en ajoutant la boucle while

Mais la lecture est trés longue, de plus j'aimerais voir toujours la fin du fichier , non le début !
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#3

Message par Laddy »

Bonjour
je pense que tu dois mettre ton résultat dans un tableau.
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#4

Message par pierrotm777 »

Alors , j'ai essayé ça:

Code : Tout sélectionner

Func DsLogUpdate()
If $DebugGUIStatus = True Then
    Local $x, $aRecords
    If Not _FileReadToArray("c:\dslog2.txt",$aRecords) Then
       MsgBox(4096,"Error", " Error reading log to Array     error:" & @error)
       Exit
    EndIf
    For $x = 1 to $aRecords[0]
        GUICtrlSetData($DebugWindow, $aRecords[$x])
    If $DebugGUIStatus = False Then ExitLoop
    Next
EndIf
EndFunc
mais on dirait qu'il relit toujours la même chose, et trop vite
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#5

Message par Laddy »

Bonjour
j'ai tenté de relire ce que tu voulais, et je pense que j'ai pas compris tu veux lister toutes les lignes dans ta listbox en commençant par la fin ?


Si oui

voici un code qui le permet
► Afficher le texteLister fichier dans une listeview
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#6

Message par pierrotm777 »

Oui , c'est bien ça, mais il semble que je me retrouve 2 fois avec la même ligne lue à chaque fois !

Est-il possible d'avoir entre chaque ligne lue , un - par exemple
Est-il possible que le curseur vertical reste toujours en bas afin de pouvoir lire non pas le début mais la fin du fichier .
Le fichier dslog.txt est mis à jour à peu prés toutes les deux secondes, est-il possible de mettre à jour la liste tout en restant donc en bas du fichier ?

Merci par avance de votre aide !
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#7

Message par Laddy »

Re,
Mon exemple affiche la fin du fichier en haut de la Gui et non en bas de la gui

quelle est la structure de ton fichier exactement ? peux tu le mettre à disposition ?
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#8

Message par pierrotm777 »

Bien sure :D
Fichiers joints
dslog.txt
(323.28 Kio) Téléchargé 74 fois
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#9

Message par Laddy »

Question : y a combien de ligne qui se mette à jour toutes les x secondes ??
vu le nombre de ligne c'est normal qu'il mette du temps à indexer toutes les lignes, la première fois.

Sinon pour le reste, ce n'est pas de mon niveau, désolé
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#10

Message par pierrotm777 »

Merci tout de même
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#11

Message par GaRydelaMer »

Bonjour

si je comprends bien, tu voudrais afficher dans une Liste, le résultat d'un fichier "log".

Je ferais comme ca moi.
1/ je récupère le nombre de ligne du fichier

Code : Tout sélectionner

#Include <File.au3>
Local $count = _FileCountLines($sFilePath)
 
2/ je vérifie si il y a une nouvelle ligne en comparant le nombre de ligne avec le nombre d'élément de la liste
si il y a des lignes en plus je les ajoute à la liste, et je rend visible la dernière ligne.

Voila coder vite fait, j'ai aps testé, mais ca doit être bon @ + ou - 1
suivant la gestion des index, si commence à 0 ou 1
donc teste le sur qeulques ligne et ajuste les variables

Local $countLigne = _FileCountLines($sFilePath) +-1
Local $countListe = _GUICtrlListBox_GetCount($hWnd) +-1
Local $CountNewline = $countLigne - $countListe pareil ici +- 1
► Afficher le texte
De plus je pense que ca doit être rapide car j'ajoute que les nouvelles lignes, donc même si tu le rafraichis souvent ca doit être rapide. Sauf la 1ere fois puisque il va ajouter toutes les lignes.
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#12

Message par pierrotm777 »

C'est bien aussi,
je l'ai donc adapté ainsi:
► Afficher le texte
Mais cette fois j'ai trois lignes identiques pour chaque nouvelle ligne
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#13

Message par GaRydelaMer »

Re

moi je pense tu devrais prendre l'habitude de relire ton code, et surtout apprendre à nommer tes variables.

Dans le même code tu mélanges $DebugGUI et $DebugWindows.

Trouves toi une convention pour le nom des variables c'est plus simple ensuite à lire.

$GUI_Debug pour la gui
$List_Debug pour la liste
$Bt_Ok pour un bouton

Etc...
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#14

Message par pierrotm777 »

OUI, :mrgreen: promis je vais faire des efforts !!!

Vous avez une idée pour la répétition par trois ? SVP
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#15

Message par pierrotm777 »

Je n'avais pas de mise à jour regulière, j'ai alors remplacé:

Code : Tout sélectionner

DsLogUpdate()
par

Code : Tout sélectionner

AdlibRegister("DsLogUpdate",2000)
Aprés essais, votre proposition fonctionne mais avec énormément de redondance !!!
Fichiers joints
sk.jpg
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture fichier txt dans GUICtrlCreateList + sauveg

#16

Message par pierrotm777 »

Je pense avoir résolu mon problème.

En fait , la proposition de GarydelaMer est ok sauf qu'il faut tout de même lire le fichier une première fois.
Voici donc les modifications qui fonctionnent:
► Afficher le texte
Merci à vous
Répondre