Lire un fichier log au fur et à mesure de sa création

[Résolu]
Signaler
Messages postés
2
Date d'inscription
jeudi 29 janvier 2004
Statut
Membre
Dernière intervention
8 mars 2005
-
Messages postés
2
Date d'inscription
jeudi 29 janvier 2004
Statut
Membre
Dernière intervention
8 mars 2005
-
Bonjour,

Je cherche une methode simple pour lire un fichier log (texte) au fur et à mésure de sa création.
Je m'explique
J'ai un fichier log de départ que je sais lire en entier ou ligne / ligne, ensuite je demare un timer qui vérifie si le fichier change, si cela est la cas je doit lire (et traiter) uniquemet la ou les lignes qui ont été ajoutées.
Mon problèmes est que je 'arrive pas à lire d'une manière rapide les lignes qui ont été ajouté a mon fichier log sans relire tout le fichier.
Si vous avez des idées merci de me les communiquer.

D'avance merci

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut
Juste une idée comme ça :
Quand tu lis la première fois, pas possible de faire autrement que de lire chaque ligne.
Au fur et à mesure que tu lis ces lignes, il faut stocker leur taille et les cumuler pour connaitre le nombre d'octets que tu as déjà lu --> NbLu.
Il faudra peut-être ajouter 2 octets pour chaque vbCrLf qui sépare chaque ligne.
Ensuite, quand tu veux relire les ajouts dans ce fichier :
Ouvre ton fichier en mode Binary :
Open "mon fichier.log" for Binary Access Read As #1
Seek #1, NbLu ' tu tu retrouves là où tu en étais
Dim Texte As String Texte String(LOF(1) - NbLu, 32) ' Texte à lire Taille fichier - déjà lu
Get #1, , Texte
Close #1
NbLu = NbLu + Len(Texte) ' actualise le nb d'octets lus
Tu as dans Texte, toutes les données qui suivent celles que tu à déjà lues.
Il te suffit ensuite de transformer ces données en tableau pour retrouver tes lignes :
Dim Tablo() As String
Tablo = Split(Texte, vbCrLf)
Tu as la 1ere ligne dans Tablo(0) ... jusqu'à Tablo(x) où x = UBound(Tablo)

A affiner surement ...

Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 82 internautes nous ont dit merci ce mois-ci

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Nota : Il faudra peut-être que le fichier LOG que tu écris soit ouvert en Open avec "Lock Shared" pour accepter une ouverture multiple.

Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Messages postés
2
Date d'inscription
jeudi 29 janvier 2004
Statut
Membre
Dernière intervention
8 mars 2005

Merci beaucoup jack, ça solutionne mon probleme et ça accelère l'éxecution du code.

Surtout que c'est pour faire un parser d'un fichier log de jeu online et en temps réèl