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

Free Pascal Discussion :

Equivalent de FileSize pour les fichiers texte [FAQ] [Free Pascal]


Sujet :

Free Pascal

  1. #1
    Membre éclairé
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 475
    Points : 779
    Points
    779
    Par défaut Equivalent de FileSize pour les fichiers texte
    Bonsoir,

    Existe-t-il en Freepascal un équivalent de la fonction Filesize pour les fichiers textes (i.e une fonction qui donnerait le nombre de lignes d'un fichier texte) ?
    Ce qui me dispenserait de dupliquer quelques lignes de code.

    Merci.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 947
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 947
    Points : 5 660
    Points
    5 660
    Par défaut
    Hai,

    Non.

    Le seul moyen portable de connaître le nombre de lignes est de les compter. Il y a plusieurs moyens de le faire, mais il faut les compter, sauf si toutes les lignes ont la même longueur, ce qui simplifie le problème.

  3. #3
    Membre éclairé
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 475
    Points : 779
    Points
    779
    Par défaut
    OK, c'est ce que j'ai fait. (Je me suis fait une fonction)

    Comme c'est pour affecter chaque ligne à une case d'un tableau dynamique (variable selon la longueur du fichier) je voulais juste savoir s'il y avait un moyen encore plus simple que d'ouvrir le fichier / compter / revenir au début du fichier / fixer la taille du tableau / affecter chaque ligne.

    ... au cas où j'aurais loupé une fonction dans la doc.

    Merci pour cette prompte réponse.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 947
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 947
    Points : 5 660
    Points
    5 660
    Par défaut
    Hai,

    Si tu utilises un tableau dynamique, la solution adoptée est généralement:

    - Au départ, allouer une taille acceptable par rapport à ce qu'on attend (on en a généralement une idée)

    - Puis, au fur et à mesure de la lecture du fichier + affectation dans le tableau, une fois la limite réservée atteinte, augmenter la taille du tableau d'un facteur raisonnable (personnellement, je multiplie par 2 à chaque fois qu'il faut augmenter).

    On évite ainsi la double lecture du fichier, et on gagne en général du temps, la redéfinition de la taille du tableau étant habituellement plus rapide que la lecture sur le disque, à condition de ne pas le faire trop souvent (d'où mon facteur 2 pour l'augmentation de taille).

  5. #5
    Membre éclairé
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 475
    Points : 779
    Points
    779
    Par défaut
    Bonsoir,

    Je ne connaissais pas cette technique.

    J'incrémente le tableau à chaque affectation et en effet j'ai une double lecture (d'où ma question initiale en fait). En fait mes fichiers textes ne varient pas pendant l'exécution du programme (ce sont des données stockées) mais ils peuvent être enrichis avec un simple éditeur de texte entre deux sessions (c'est même le but), donc ma technique ne consomme pas grand-chose puisque je ne lis qu'une seule fois chaque fichier pour connaître sa taille puis une deuxième fois pour affecter.

    En revanche je vais utiliser ta technique pour un autre programme que j'ai dans mes tuyaux dans lequel la taille des fichiers peut varier pendant l'exécution du programme, là c'est plus performant, il n'y a pas de doute.

    Merci du tuyau.

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

Discussions similaires

  1. [XSD] Equivalent du <choice> pour les attribut
    Par BigOne55 dans le forum Valider
    Réponses: 6
    Dernier message: 14/03/2014, 19h24
  2. [AC-2003] Equivalent du "RowSource" pour les zones de texte
    Par voyel dans le forum IHM
    Réponses: 11
    Dernier message: 23/06/2011, 11h55
  3. Equivalant TFileStream pour les fichier texte
    Par bubulemaster dans le forum Débuter
    Réponses: 5
    Dernier message: 28/01/2010, 10h46
  4. Equivalent de BrowseForFolder pour les fichiers
    Par Thulkash dans le forum VBScript
    Réponses: 7
    Dernier message: 22/07/2008, 16h38
  5. [Excel] séparateur pour les fichiers csv
    Par drinkmilk dans le forum Excel
    Réponses: 2
    Dernier message: 27/08/2005, 14h21

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