Nп/п : 64 из 100
 От   : Randy Brukardt                      2:5075/128        26 сен 23 00:53:53
 К    : J-P. Rosen                                            26 сен 23 08:57:02
 Тема : Re: Weird behavior of Get character with trailing new lines.
----------------------------------------------------------------------------------
                                                                                 
@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



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх