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
Code : Tout sélectionner
Func DsLogUpdate()
Local $countLigne = _FileCountLines($sFilePath)
Local $countListe = _GUICtrlListBox_GetCount($hWnd)
; Je compare le Nombre de ligne si j'en ai plus je les affiche
If $countLigne > $countListe Then
_GUICtrlListBox_BeginUpdate($hListBox)
; je calcule la poisition dans le fichier de la nouvelle ligne
Local $CountNewline = $countLigne - $countListe
; j'ouvre le fichier et je lis la 1ere nouvelle ligne
; donc je me positionne dans le fichier sur la 1ère nouvelle ligne
; Important pour la suite car je vais lire séquentiellemeent a partir de la.
Local $hfile = FileOpen($sFilePath, 0)
Local $line = FileReadLine($hfile, $countLigne - $CountNewline)
; j'ajoute la ligne dans la listbox
Local $iIndex = _GUICtrlListBox_AddString($hListBox, $line)
; maintenant je vais lire jusqu'a la fin du fichier et ajouté les ligne dans la liste
While 1
$line = FileReadLine($hfile)
If @error = -1 Then ExitLoop
$iIndex = _GUICtrlListBox_AddString($hListBox, $line)
Wend
; Ici je scrolle la listebox sur le dernier index créer
; Même si la 1ere ligne est la seule ajouter avant le while puisque $iIndex est créer
_GUICtrlListBox_SetCurSel($hListBox, $iIndex)
FileClose($hfile)
_GUICtrlListBox_EndUpdate($hListBox)
EndIf
EndFunc
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.