comp.lang.ada
 help / color / mirror / Atom feed
From: Rex Reges <reges@mds.lmco.com>
To: Thomas.Koenig@ciw.uni-karlsruhe.de
Subject: Re: Reading a line of arbitrary length
Date: 1997/02/13
Date: 1997-02-13T00:00:00+00:00	[thread overview]
Message-ID: <33032AE2.666F@mds.lmco.com> (raw)
In-Reply-To: 5ds40o$rpo@fg70.rz.uni-karlsruhe.de


Thomas Koenig wrote:
> 
> What's the best way of reading a line of arbitrary length in Ada?
> 
> Get_Line only works on Strings, not Unbounded_Strings.  Would I need
> to read in chunks of fixed length, then paste them together?
> --
> 74 a3 53 cc 0b 19

Inevitably, you will get various unexpected problems using 
the Get_Line function.  Let's assume that you create a 
very large string buffer to handle most situations:

   Input_Buffer : String( 1..10_000_000 ) ;

You may run into one of the following problems:

   1) The IO buffer allocated by the operating system for
      file IO is too small to handle large strings and you
      will get an exception (happens on the Vax for strings
      on the order of a million characters).

   2) You will get a storage_error exception because the 
      variable Input_Buffer will exceed the operating system
      limits on your program size (or more commonly that you 
      don't have stack space to instantiate it).

   3) An exception will occur during the processing and all the
      data for that line will be lost.  The most common exception
      is when an end-of-file is found before the end-of-line 
      (a favorite of xedit users).

Unfortunately, it turns out that getting one character at a time
is the best solution to avoid losing data and to handle unlimited
length strings.  Actully, this is not as bad as it seems since
the machines I have used buffer I/O in chunks anyway so that a
get does not involve a disk access most of the time.


-- 
Rex Reges                      or you can call me The Fixer 
Systems Analyst                or you can call me The Lawyer
Lockheed Martin, M&DS          or you can call me The Doctor
(610)354-5047                  or you can call me Rexasaurus




  parent reply	other threads:[~1997-02-13  0:00 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-02-12  0:00 Reading a line of arbitrary length Thomas Koenig
1997-02-12  0:00 ` David C. Hoos, Sr.
1997-02-13  0:00   ` Jeff Carter
1997-02-13  0:00     ` Ted Dennison
1997-02-13  0:00       ` Larry Kilgallen
1997-02-13  0:00       ` Geert Bosch
1997-02-13  0:00       ` Rex Reges
1997-02-15  0:00         ` Matthew Heaney
1997-02-19  0:00     ` Jean-Etienne Doucet
1997-02-21  0:00       ` Mats Weber
1997-02-22  0:00         ` Robert Dewar
1997-02-24  0:00   ` Robert Dewar
1997-02-12  0:00 ` Robert Dewar
1997-02-13  0:00 ` Rex Reges [this message]
     [not found]   ` <dewar.855848896@merv>
     [not found]     ` <dsmith-1302971702290001@dsmith.clark.net>
     [not found]       ` <33047186.463F@mds.lmco.com>
1997-02-14  0:00         ` Robert Dewar
1997-02-14  0:00       ` Mats Weber
     [not found]     ` <33037A74.44AF@mds.lmco.com>
     [not found]       ` <dewar.855929857@merv>
1997-02-14  0:00         ` Gene Ouye
1997-02-15  0:00           ` Robert Dewar
1997-02-15  0:00             ` Brian Rogoff
1997-02-15  0:00               ` Robert Dewar
1997-02-16  0:00                 ` Brian Rogoff
1997-02-17  0:00                   ` Robert Dewar
1997-02-14  0:00         ` Rex Reges
1997-02-14  0:00       ` Mats Weber
1997-02-15  0:00         ` Robert Dewar
1997-02-17  0:00           ` Mats Weber
1997-02-17  0:00             ` Robert Dewar
1997-02-16  0:00   ` Jon S Anthony
1997-02-18  0:00     ` Robert Dewar
1997-02-22  0:00   ` Jon S Anthony
1997-02-21  0:00     ` Brian Rogoff
1997-02-22  0:00       ` Robert Dewar
1997-02-22  0:00         ` Brian Rogoff
1997-02-23  0:00     ` Robert Dewar
1997-02-25  0:00   ` Jon S Anthony
1997-02-26  0:00     ` Robert Dewar
1997-02-27  0:00   ` Jon S Anthony
1997-03-02  0:00     ` Robert Dewar
1997-03-02  0:00     ` Robert Dewar
1997-03-03  0:00       ` Fergus Henderson
1997-03-03  0:00         ` Robert Dewar
1997-03-03  0:00         ` Larry Kilgallen
1997-03-04  0:00           ` Fergus Henderson
1997-03-05  0:00           ` Jon S Anthony
1997-03-03  0:00   ` Jon S Anthony
1997-03-03  0:00     ` Robert Dewar
1997-03-03  0:00   ` Jon S Anthony
1997-03-03  0:00     ` Robert Dewar
1997-03-04  0:00       ` Thomas Koenig
1997-03-05  0:00         ` Larry Kilgallen
1997-03-06  0:00           ` Robert Dewar
1997-03-06  0:00         ` Robert Dewar
1997-03-05  0:00     ` Jon S Anthony
1997-03-06  0:00       ` Robert A Duff
1997-03-06  0:00         ` Robert Dewar
     [not found]     ` <dewar.857447653@m <JSA.97Mar4154951@alexandria>
1997-03-05  0:00       ` Robert A Duff
1997-03-03  0:00   ` Jon S Anthony
1997-03-03  0:00   ` Jon S Anthony
1997-03-04  0:00   ` Jon S Anthony
1997-03-05  0:00     ` Larry Kilgallen
1997-03-06  0:00       ` Fergus Henderson
1997-03-06  0:00         ` Really more GC talk (was: Reading a line of arbitrary length) Larry Kilgallen
1997-03-11  0:00           ` Fergus Henderson
1997-03-11  0:00             ` Robert Dewar
1997-03-12  0:00               ` Fergus Henderson
1997-03-04  0:00   ` Reading a line of arbitrary length Jon S Anthony
1997-03-05  0:00   ` Jon S Anthony
1997-02-16  0:00 ` Matthew Heaney
1997-02-16  0:00   ` Robert Dewar
1997-02-16  0:00     ` Matthew Heaney
1997-02-17  0:00       ` Robert Dewar
1997-02-25  0:00 ` Jon S Anthony
1997-03-04  0:00 ` Fergus Henderson
1997-03-05  0:00   ` Richard A. O'Keefe
1997-03-06  0:00     ` Fergus Henderson
1997-03-06  0:00       ` Robert Dewar
1997-03-11  0:00         ` Fergus Henderson
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox