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

Résolu
cs_DomG Messages postés 2 Date d'inscription jeudi 29 janvier 2004 Statut Membre Dernière intervention 8 mars 2005 - 8 mars 2005 à 17:09
cs_DomG Messages postés 2 Date d'inscription jeudi 29 janvier 2004 Statut Membre Dernière intervention 8 mars 2005 - 8 mars 2005 à 23:13
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 mars 2005 à 18:01
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
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 mars 2005 à 18:02
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)
0
cs_DomG Messages postés 2 Date d'inscription jeudi 29 janvier 2004 Statut Membre Dernière intervention 8 mars 2005
8 mars 2005 à 23:13
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
0
Rejoignez-nous