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.
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.
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.
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.
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).
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager