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
next prev 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