Blady
2015-10-31 09:58:08 UTC
Bonjour,
Petit problème tout bête, je lis les caractères d'un fichier texte tant
que je n'arrive pas à la fin du fichier avec Text_IO Get et End_Of_File.
Tout va bien si le fichier se termine par un caractère alphanumérique.
Mais si le fichier texte se termine avec des retours à la ligne
j'obtiens un End_Error !!
Le RM dit de Get :
After skipping any line terminators and any page terminators, reads the
next character from the specified input file and returns the value of
this character in the out parameter Item.
Je veux bien que les retours à la ligne soient sautés mais alors comment
déterminer la fin du fichier pour ne pas provoquer l'exception.
Source :
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Command_Line; use Ada.Command_Line;
procedure grep_cxx_pxx is
Source : File_Type;
C : Character;
begin
if Argument_Count = 0 then
Put_Line ("Usage : grep_cxx_pxx fichier_texte");
return;
end if;
Open (Source, In_File, Argument (1));
while not End_Of_File (Source) loop
Get (Source, C); -- END_ERROR
end loop;
Close (Source);
exception
when others =>
Put_Line ("Error &" & C & '&');
end grep_cxx_pxx;
Merci pour vos réponses, Pascal.
http://blady.pagesperso-orange.fr
Petit problème tout bête, je lis les caractères d'un fichier texte tant
que je n'arrive pas à la fin du fichier avec Text_IO Get et End_Of_File.
Tout va bien si le fichier se termine par un caractère alphanumérique.
Mais si le fichier texte se termine avec des retours à la ligne
j'obtiens un End_Error !!
Le RM dit de Get :
After skipping any line terminators and any page terminators, reads the
next character from the specified input file and returns the value of
this character in the out parameter Item.
Je veux bien que les retours à la ligne soient sautés mais alors comment
déterminer la fin du fichier pour ne pas provoquer l'exception.
Source :
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Command_Line; use Ada.Command_Line;
procedure grep_cxx_pxx is
Source : File_Type;
C : Character;
begin
if Argument_Count = 0 then
Put_Line ("Usage : grep_cxx_pxx fichier_texte");
return;
end if;
Open (Source, In_File, Argument (1));
while not End_Of_File (Source) loop
Get (Source, C); -- END_ERROR
end loop;
Close (Source);
exception
when others =>
Put_Line ("Error &" & C & '&');
end grep_cxx_pxx;
Merci pour vos réponses, Pascal.
http://blady.pagesperso-orange.fr