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

Delphi Discussion :

Lecture fichier TXT


Sujet :

Delphi

  1. #1
    Membre habitué
    Avatar de Oncle_Pete
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 246
    Points : 175
    Points
    175
    Par défaut Lecture fichier TXT
    Bonjour,


    Je NE souhaite lire QUE les 10 premiers caracteres de chaque ligne (+/-8000) d'un fichier texte afin de vérifier si je rencontre une séquence précise laquelle déclenche des traitements.
    Ce fichier possede un grand nombre de caracteres exotiques au point que la fonction readln until eof(filename) s'arrete avant la fin effective du fichier.

    L'exemple delphi de FileRead/FileSeek ne me renvoit rien et je n'arrive pas a renvoyer a la ligne la fonction Blockread apres la lecture de 10 caractères.
    Que me conseillez-vous ?
    Merci

    Oncle Pete

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 671
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 671
    Points : 7 044
    Points
    7 044
    Par défaut
    Tu as essayé avec TFileStream ?

  3. #3
    Membre habitué
    Avatar de Oncle_Pete
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 246
    Points : 175
    Points
    175
    Par défaut
    J'ai le meme souci qu'avec FileRead/FileSeek, a savoir, je lis les donnees par groupe de 10 sans pouvoir aller a la ligne apres mon 1er groupe de 10.

    Oncle pete

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 581
    Points : 25 239
    Points
    25 239
    Par défaut
    Regarde ce thread (fonction BuildLinesIndexes ou ReadLineRaw), avec un filestream, j'implémente une lecture ligne par ligne, après à toi de greffer ce qu'il te faut, mais une string delphi gère parfaitement les caractères entre 0 et 31 ... si c'est cela qui t'inquiète ...

    En fait, je pense que tu peux utiliser mon objet TTextFileReader directement, il devrait t'envoyer les lignes peu importe ce qu'elles contiennent (#14, #26, #27 qui provoque des ruptures avec un TextFile ReadLn par exemple) ...

  5. #5
    Membre habitué
    Avatar de Oncle_Pete
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 246
    Points : 175
    Points
    175
    Par défaut
    Merci ShaiLeTroll


    Je suis stupefait, mais ..... ca marche !!!

    Le temps de comprendre le minimum necessaire, et d'inclure tes fonctions.
    Je t'avoue que la necessite de creer un fichier d'index me laisse un peu perplexe sur son utilite.

    En tout cas, bravo et encore merci a toi

    Oncle Pete

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 581
    Points : 25 239
    Points
    25 239
    Par défaut
    La création du fichier d'index n'est valable que dans l'utilisation avec un seek ...

    si tu utilise ReadStrings, cela fonctionne comme un ReadLn normalement, tu ne peux que avancer dans le fichier ... cela devrait être ton mode de fonctionnement, Indexed à False, et ne pas appeler BuildLinesIndexes ...

    si tu utilise ReadLines, tu peux utiliser sans index, mais il va relire tout le fichier à chaque fois, pour trouver la chaine à l'indice n ... donc il vaut mieux activer Indexed, il génère l'index, et comme le fichier d'index est en enregistrement fixe, le seek est facile à faire, ensuite rien de plus facile de prendre la ligne associé ...

    et l'avantage c'est tu peux lire dans le fichier grace à l'index n'importe où, n'importe quand, tu peux aller en avant, en arrière ... libre comme l'air, ce qu'un fichier genre TextFile + ReadLn n'autorise pas ...

    Autre point, si l'on ne gère pas de caractères entre #0 et #31, on peut utiliser une TStringList ...

    J'ai créé cette classe TTextFileReader pour un membre du forum, qui a des fichiers textes de 4Go, et j'attends une réponse crucial de sa part pour l'aider dans son problème, la fréquence de mise à jour des fichiers, si c'est 1 fois par jour, la création de l'index prenant 10 minutes, c'est tout à fait raisonnable surtout que l'accès au fichier par la suite est instantané durant toute la journée (maj + index en nocturne ni vu ni connu) ... si c'est plus souvent, je lui renouvellerais dans mettre cela dans une table (Oracle, MySQL, ...) sera la mieux pour gérer un grand volume d'enreg indexé ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lecture fichier "txt"
    Par heyax dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/01/2008, 16h03
  2. Lecture fichier txt vers tableau alloué
    Par yeboum dans le forum Fortran
    Réponses: 3
    Dernier message: 27/11/2007, 09h31
  3. lecture fichier txt
    Par stephaneamadeus dans le forum C
    Réponses: 8
    Dernier message: 28/04/2006, 18h47
  4. Lecture fichier txt
    Par licorne dans le forum C
    Réponses: 3
    Dernier message: 03/04/2006, 17h14
  5. [langage] prob lecture fichier .txt
    Par martijan dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2003, 11h08

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