cs_DomG
Messages postés2Date d'inscriptionjeudi 29 janvier 2004StatutMembreDernière intervention 8 mars 2005
-
8 mars 2005 à 17:09
cs_DomG
Messages postés2Date d'inscriptionjeudi 29 janvier 2004StatutMembreDerniè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.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)