From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on ip-172-31-91-241.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.0 required=3.0 tests=NICE_REPLY_A autolearn=ham autolearn_force=no version=3.4.6 Path: eternal-september.org!news.eternal-september.org!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Niklas Holsti Newsgroups: comp.lang.ada Subject: Re: Weird behavior of Get character with trailing new lines. Date: Sat, 23 Sep 2023 17:03:14 +0300 Organization: Tidorum Ltd Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: individual.net KVzprfElTXaOu35CNdLaPQDSgbrW0tj4bSDKWrs//+/CT7fy3j Cancel-Lock: sha1:q3Cb7XbG1WJlPAGWu+VPfBFTsm0= sha256:RtmmzRCOtH0q9TIbrfzYKX8PQVK2Ft8Bk5paYqyujYo= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Content-Language: en-US In-Reply-To: Xref: news.eternal-september.org comp.lang.ada:65704 List-Id: On 2023-09-23 12:25, Dmitry A. Kazakov wrote: > On 2023-09-23 10:39, Niklas Holsti wrote: >> On 2023-09-23 10:02, J-P. Rosen wrote: > >>> That's why I never check End_Of_File, but handle the End_Error >>> exception. It always works. >> >> True, but it may not be convenient for the overall logic of the >> program that reads the file. That program often wants do to something >> with the contents, after reading the whole file, and having to enter >> that part of the program through an exception does complicate the code >> a little. > > It rather simplifies the code. Oh? > You exit the loop and do whatever is necessary there. That is exactly what happens in the "while not End_Of_File" loop. If you want to use End_Error instead, you have to add an exception handler, and if you want to stay in the subprogram's statement sequence without entering the subprogram-level exception handlers, you have to add a block to contain the reading loop and make the exception handler local to that block. To me that looks like adding code -> more complex. Of course not much more complex, but a little, as I said. > Testing for the file end is unreliable and non-portable. Many types > of files simply do not support that test.In other cases the test is > not file immutable with the side effects that can change the program > logic. I suppose you are talking about the need for End_Of_File to possibly read ahead past a line terminator? If not, please clarify. That said, I certainly think that a program reading files should be prepared to handle End_Error, especially if a file is read at several places in the program (and not in a single loop as in the present program).