----------------------------------------------------------------------------------
@MSGID: 1@dont-email.me> d90aa7f5
@REPLY: 1@dont-email.me> 199c3b7c
@REPLYADDR Randy Brukardt <randy@rrsoftware.com>
@REPLYTO 2:5075/128 Randy Brukardt
@CHRS: CP866 2
@RFC: 1 0
@RFC-Message-ID: 1@dont-email.me>
@RFC-References: 1@dont-email.me>
1@dont-email.me> 1@dont-email.me>
@TZUTC: -0500
@TID: FIDOGATE-5.12-ge4e8b94
"J-P. Rosen" <
rosen@adalog.fr> wrote in message
news:uem2id$moia$
1@dont-email.me...
> Le 22/09/2023 ? 22:05, Jeffrey R.Carter a ?crit :
>> On 2023-09-22 21:30, Blady wrote:
>>>
>>> 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.
>>
>> As you have quoted, Get (Character) skips line terminators. End_Of_File
>> returns True if there is a single line terminator before the file
>> terminator, but False if there are multiple line terminators before the
>> file terminator. So you either have to explicitly skip line terminators,
>> or handle End_Error.
>>
> And this works only if the input file is "well formed", i.e. if it has
> line terminators as the compiler expects them to be (f.e., you will be in
> trouble if the last line has no LF).
> That`s why I never check End_Of_File, but handle the End_Error exception.
> It always works.
Agreed. And if the file might contain a page terminator, things get even
worse because you would have to mess around with End_of_Page in order to
avoid hitting a combination that still will raise End_Error. It`s not worth
the mental energy to avoid it, especially in a program that will be used by
others. (I`ve sometimes used the simplest possible way to writing a
"quick&dirty" program for my own use; for such programs I skip the error
handling as I figure I can figure out what I did wrong by looking at the
exception raised. But that`s often a bad idea even in that case as such
programs have a tendency to get reused years later and then the intended
usage often isn`t clear.)
Randy.
--- Microsoft Outlook Express 6.00.2900.5931
* 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