Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1582 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  Compter le nombre de lignes d'un fichier .

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Compter le nombre de lignes d'un fichier .

n°2273717
eroge
Posté le 18-01-2016 à 20:00:55  profilanswer
 

Le prog suivant compte le nombre de lignes de son fichier .
 
Il se compile . Pourtant à l'execution on obtient l' erreur :
 
 raised ADA.IO_EXCEPTIONS.END_ERROR : a-textio.adb:1900
 
 

Code :
  1. WITH Ada.Text_IO ;              USE Ada.Text_IO ;
  2. WITH Ada.Text_IO.Unbounded_IO ; USE Ada.Text_IO.Unbounded_IO ;
  3. WITH Ada.Strings.Unbounded ;    USE Ada.Strings.Unbounded ;
  4.  
  5. Procedure main is
  6.  
  7.  this_file : File_type ;
  8.  
  9.  Last_case : Positive_Count := 1 ;
  10.  
  11. Begin
  12.  
  13.    Open
  14.     (File => this_file ,
  15.      Mode => In_file ,
  16.      Name => "main.adb" );
  17.  
  18.   loop exit when End_Of_File ( this_file ) ;
  19.     set_line( this_file , Last_case );
  20.  
  21.     Last_case := Last_case + 1 ;
  22.   end loop ;
  23.  
  24.   Close ( this_file );
  25.  
  26.   put ( Positive_Count'image(Last_case));
  27. End main ;


Message édité par eroge le 19-01-2016 à 04:48:47
mood
Publicité
Posté le 18-01-2016 à 20:00:55  profilanswer
 

n°2273739
eroge
Posté le 19-01-2016 à 04:46:42  profilanswer
 

J'ai modifié le code .
 
L' erreur disparait avec une exception , pourtant je ne comprends pas pourquoi ça affiche une ligne de trop .
 
Le résultat a l'execution est : 30 .
 

Code :
  1. WITH Ada.Text_IO ;              USE Ada.Text_IO ;
  2. WITH Ada.Text_IO.Unbounded_IO ; USE Ada.Text_IO.Unbounded_IO ;
  3. WITH Ada.Strings.Unbounded ;    USE Ada.Strings.Unbounded ;
  4.  
  5. Procedure main is
  6.  
  7.  this_file : File_type ;
  8.  
  9.  Last_case : Positive_Count := 1 ;
  10.  
  11. Begin
  12.  
  13.    Open
  14.     (File => this_file ,
  15.      Mode => In_file ,
  16.      Name => "main.adb" );
  17.  
  18.   loop
  19.     set_line( this_file , Last_case );
  20.  
  21.     Last_case := Last_case + 1 ;
  22.   end loop ;
  23.  
  24.    exception
  25.      when End_Error => Close ( this_file );
  26.  
  27.   put ( Positive_Count'image(Last_case));
  28.  
  29. end main ;

n°2278538
Profil sup​primé
Posté le 28-03-2016 à 18:34:10  answer
 

Bonjour,
Pour eviter l'erreur peut-être utiliser End_Of_File qui retourne vrai en fin de fichier ce que permet d'arrêter la lecture du fichier.
En suite compter correctement. + 1 à partir de zero me parait une bonne chose.
Aussi fermer le fichier avant le traitement de l'exception.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  Compter le nombre de lignes d'un fichier .

 

Sujets relatifs
Lecture d'un fichier texteDézippé un fichier
BATCH, FOR/R rename fichier avec espace dans le nomDo était innatendu, ou est mon erreur?
[HTA / JAVA] Comment ouvrir un fichierUn fichier à décoder
[Résolu]Bug du compilateur Gnat ?Erreur Code:Blocks : ' cannot find ... '
erreur soap InvalidSecurityAn error occurred when verifying securityune erreur l'array , hash-tableau
Plus de sujets relatifs à : Compter le nombre de lignes d'un fichier .


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR