Bonjour j'ai un petit soucis avec mon programme...
Après avoir ouvert un fichier-texte j'aimerai pouvoir calculer le nombre de caractère que contient le texte afin de pouvoir calculer le nombre de lignes qu'il contient...
quelqu'un sait m'aider?
Version imprimable
Bonjour j'ai un petit soucis avec mon programme...
Après avoir ouvert un fichier-texte j'aimerai pouvoir calculer le nombre de caractère que contient le texte afin de pouvoir calculer le nombre de lignes qu'il contient...
quelqu'un sait m'aider?
Ta question n'est pas claire : un type fichier texte en Pascal est un type fichier 'File of char' qui possède un caractère CR/LF à la fin de chaque ligne.
DONC le fichier texte est déjà structuré sous forme de lignes, inutile par conséquent de compter les caractères pour avoir le nombre de lignes. Le code suivant permet d'obtenir ce nombre de lignes :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Function Nb_Lignes : integer; Var Nom_Fichier : String; Fichier_Source : Text; i: integer; Begin Writeln(' Nom du fichier à ouvrir ? '); Readln(Nom_Fichier); Assign(Fichier_Source,Nom_Fichier); {$i-} reset(Fichier_Source); {$i+} If IOresult<>0 then Begin writeln('Le fichier ', Nom_Fichier, ' n''a pas été trouvé '); readln; Halt; end; i:=1; While not eof(Fichier_Source) do Begin Readln(Fichier_Source); i:=i+1; End; (* lecture fichier *) close(Fichier_Source); {fermeture fichier source} Nb_Lignes := i; End; (* Nb_Lignes *)
Une deuxième fonction ?
Le principe est d'utiliser eoln en effet et de compter les caractères. L'algo est simple.
Si c'est une fonction, deux c'est mieux, pour pouvoir les utiliser séparément.
Si tu utilises une procédure, il faut faire attention aux résultats : variables locales ? Comment les utiliser dans le programme. Si tu modifier l'état de ton fichier, c'est en effet une procédure qu'il te faut.
Bonsoir ,
Je viens de m'apercevoir qu'il y a une erreur dans la fonction que je t'ai donnée : il faut initialiser la variable i à 0 et non pas à 1 comme je l'ai fait (j'avais dû modifier ça pour les besoins d'un programme particulier et je t'ai envoyé la mauvaise version.)
Pour compter les caractères, utilise la fonction Length de TP.
L'algo est quasiment le même que pour le comptage des lignes :
Poste ta solution et je regarderai si ça fonctionne. J'ai aussi une fonction pour ce genre de choses.Code:
1
2
3
4
5
6
7 1) Ouvrir le fichier 2) Tant Que la fin du fichier n''est pas atteinte Faire : a) Lire une ligne du fichier b) Affecter la longueur de la ligne (length) à une variable ('NbCaracteres' par exemple) 3) fermer le fichier.
relis mon post : je t'ai dit d'utiliser la fonction Length. L'as-tu utilisée ?
d'autre part, il faut faire un Readln sur le fihier texte mais affecter chaque ligne à une variable ('Ligne' ar exemple, c'est original) pour pouvoir lui appliquer la fonction Length.
Ponds un code et je te dirai ce qu'il faut faire faire pour l'améliorer. Je t'ai donné pas mal de pistes, là. Avec l'algo ça devrait normalement t'aider.
En gros je déclare var ligne1,ligne2,ligne3: string
Ensuite pour calculer le nombre de caractère de la ligne je fais
? c'est ce que j'ai compris mais ça m'a l'air faux donc je suppose que j'ai mal comprisCode:
1
2
3
4
5 readln(fichier_source) length(ligne1) readln(fichier_source) length(ligne2) etc
La déclaration :
Une boucle pour lire toutes les lignes une par une et calculer leur nombre de caractères :Code:Nom_Fichier, ligne : String;
lecture et affectation :Code:
1
2
3 While not eof(Fichier_Source) do begin end;
puis dénombrement du nombre de caractères avec length pour chaque ligne. Si c'est un exercice tu aurais dû normalement avoir des cours t'expliquant au moins la lecture d'un fichier, théoriquement.Code:readln(Fichier_Source, Ligne);
Dans cette partie
Une boucle pour lire toutes les lignes une par une et calculer leur nombre de caractères :
[CODE] While not eof(Fichier_Source) do
begin
end;
Je suppose que je dois mettre quelque chose entre le begin et le end sinon c'est que je comprends pas comment cette boucle lit et calcul