From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Weird behavior of Get character with trailing new lines.
Date: Tue, 26 Sep 2023 00:53:53 -0500 [thread overview]
Message-ID: <uetrko$2cb0h$1@dont-email.me> (raw)
In-Reply-To: uem2id$moia$1@dont-email.me
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 2080 bytes --]
"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.
prev parent reply other threads:[~2023-09-26 5:53 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-22 19:30 Weird behavior of Get character with trailing new lines Blady
2023-09-22 19:52 ` Niklas Holsti
2023-09-22 20:05 ` Jeffrey R.Carter
2023-09-23 7:02 ` J-P. Rosen
2023-09-23 8:39 ` Niklas Holsti
2023-09-23 9:25 ` Dmitry A. Kazakov
2023-09-23 14:03 ` Niklas Holsti
2023-09-24 7:50 ` Dmitry A. Kazakov
2023-09-25 19:55 ` Blady
2023-09-26 5:53 ` Randy Brukardt [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox