----------------------------------------------------------------------------------
@MSGID: 1@dont-email.me> 4e5ef6ae
@REPLYADDR Blady <p.p11@orange.fr>
@REPLYTO 2:5075/128 Blady
@CHRS: CP866 2
@RFC: 1 0
@RFC-Message-ID: 1@dont-email.me>
@TZUTC: 0200
@PID: Mozilla/5.0 (Macintosh; Intel Mac OS X
10.15; rv:102.0) Gecko/20100101 Thunderbird/102.15.1
@TID: FIDOGATE-5.12-ge4e8b94
Hello,
I`m reading a text file with Get character from Text_IO with a while
loop controlled by End_Of_File.
% cat test_20230922_get_char.adb
with Ada.Text_IO; use Ada.Text_IO;
procedure test_20230922_get_char is
procedure Get is
F : File_Type;
Ch : Character;
begin
Open (F, In_File, "test_20230922_get_char.adb");
while not End_Of_File(F) loop
Get (F, Ch);
Put (Ch);
end loop;
Close (F);
Put_Line ("File read with get.");
end;
begin
Get;
end;
All will be well, unfortunately not!
Despite the End_Of_File, I got an END_ERROR exception when there are
several trailing new lines at the end of the text:
% test_20230922_get_char
with Ada.Text_IO; use Ada.Text_IO;procedure test_20230922_get_char is
procedure Get is F : File_Type; Ch : Character; begin
Open (F, In_File, "test_20230922_get_char.adb"); while not
End_Of_File(F) loop Get (F, Ch); Put (Ch); end
loop; Close (F); Put_Line ("File read with get.");
end;beginGet;end;
Execution of ../bin/test_20230922_get_char terminated by unhandled exception
raised ADA.IO_EXCEPTIONS.END_ERROR : a-textio.adb:517
The code is compiled with GNAT, does it comply with the standard?
A.10.7 Input-Output of Characters and Strings
For an item of type Character the following procedures are provided:
procedure Get(File : in File_Type; Item : out Character);
procedure Get(Item : out Character);
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.
The exception End_Error is propagated if an attempt is made to skip a
file terminator.
This seems to be the case, then how to avoid the exception?
Thanks, Pascal.
--- Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0)
Gecko/20100101 Thunderbird/102.15.1
* Origin: A noiseless patient Spider (2:5075/128)
SEEN-BY: 5001/100 5005/49 5015/255 5019/40 5020/715
848 1042 4441 12000
SEEN-BY: 5030/49 1081 5058/104 5075/128
@PATH: 5075/128 5020/1042 4441