IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

parcourir un fichier texte.


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut parcourir un fichier texte.
    Bonjour,

    Je possède un gros fichier texte avec des lignes de type

    [XX\XX\XXXX] - ...
    [XX\XX\XXXX] - ...
    [XX\XX\XXXX] - ...

    Mon but est de faire une pré analyse de mon fichier texte pour récuperer la date de la 1ere ligne et la date de la derniere ligne.

    Cette pré analyse, permettra a l'utilisateur de choisir un intervaelle de date, et seulement les lignes possedant leur date dans cet intervalle seront analysées

    Comment faire cela le plus optimisé possible ?

    Il faut lire tous le fichier texte pour recuperer la derniere ligne ?

    Pourrait on lire le fichier texte et enregistrer la position de chacune des ligne dans le but de faire un seek pour ce positionner directement au debut de l'intervalle au debut de l'ananyse complete.

    MERCI de votre aide.

  2. #2
    Membre habitué Avatar de Archibald29
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 112
    Points : 131
    Points
    131
    Par défaut Accés Direct dans un fichier texte
    Bonjour,

    C'est juste une hypothése de travail :

    - Peut être en définissant un type record de la longueur exacte de l'une des lignes, avec des fonctions d'accés fichier telles qu'en pascal

    - La dernière ligne est accessible en calculant le nombre de records d'aprés la taille du fichier


  3. #3
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Salut

    Juste une piste de réflexion...

    Ne pourrais-tu pas lire le fichier octet par octet en commençant pas la fin, et dès que la valeur lue correspond à la valeur ascii du crochet ouvrant (91), il ne te resterait plus qu'à lire la date juste après...

    A condition bien sûr que la dernière ligne de texte ne contienne pas ce caractère et pour minimiser ce risque, tu pourrais tester si le 11ème octet suivant est bien un crochet fermant (93)

    : : : : : : : : :
    Choisir, c'est renoncer...

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    Je suggère un TStringList, pour autant que le fichier ne soit pas démesuré

    Tu disposes ainsi du LoadFromFile pour le charger, puis un petit Copy sur les Items [0] et [count-1] et tu auras les 2 dates.

    Ensuite, un Free pour libérer le TStringList.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut
    Le texte peut etre immence, fichier LOG Apache, je fais mes tests avec un fichier de 60 Mo, c'est gerable ?

  6. #6
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    Hello,

    Vu la taille de ton fichier de log, je te déconseille l'utilisation d'un TStringList pour charger toutes les lignes.

    2 idées :

    1/
    Ne prendre en compte que les xx derniers caractères du fichier, les charger dans un TStringList et ne retenir que la dernière ligne du TStringList. Il faut dans ce cas prévoir assez large pour être toujours certain de prendre au moins 1 ligne complète, par exemple les 1000 derniers caractères.
    2/
    Parcourir le fichier par la fin mais en analysant les retours à la ligne plutôt que les crochets car sinon le résultat sera faut dans ce cas :

    [18/04/2006] - Invalid Date [01/04/1006]

    Donc en gros, tu assignes ton fichier, tu déplaces le curseur à la fin et tu remontes d'un caractère à chaque appel pour savoir s'il s'agit du retour à la ligne. Si c'est le cas, tu lis la séquence qui suit le retour à la ligne (attention si le fichier se termine par un retour à la ligne, dans ce cas ne pas en tenir compte évidement).

  7. #7
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut


    il existe un composant sympa : TabFile
    qui gere les gros fichier

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

Discussions similaires

  1. Réponses: 8
    Dernier message: 20/06/2007, 16h56
  2. Réponses: 151
    Dernier message: 09/06/2007, 15h17
  3. [Tableaux] parcourir un fichier texte
    Par infotime dans le forum Langage
    Réponses: 2
    Dernier message: 25/05/2007, 11h56
  4. Comment parcourir un fichier texte avec une boucle ?
    Par kikica dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2005, 17h13
  5. Réponses: 6
    Dernier message: 23/12/2003, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo