comp.lang.ada
 help / color / mirror / Atom feed
From: Matthew Heaney <matthew_heaney@acm.org>
Subject: Re: newbie problem
Date: 1998/12/05
Date: 1998-12-05T00:00:00+00:00	[thread overview]
Message-ID: <m3btli7rct.fsf@mheaney.ni.net> (raw)
In-Reply-To: 3667EE11.6E94BA0F@interact.net.au

Graeme Wallace <Dizzy@interact.net.au> writes:

> If I want to get user input for my program in the form of a  string of
> undefined length, how do I do so ?  If I set the string length to, say:
> 
> help_me_please : String(1..20);
> 
> I seem to be stuck with a string exactly that size.  What is the
> variable assignment which allows the actual length of the user input to
> determine the length of the string which the io system
> (ada.text_io.)gets ?

You have to allocate a buffer of some fixed size, as you have done.

What is missing from your solution is declaration of a "last" object,
whose value indicates the index value of the last valid character that
was input.

The standard idiom for doing this sort of thing is

declare
  Line : String (1 .. 80);
  Last : Natural;
begin
  Ada.Text_IO.Get_Line (Line, Last);

  ... Line (Line'First .. Last) ...

end;


The value of Last tells you how much of the buffer is actually in use.

Be careful not to name the Last object "Length."  That would be
misleading, and potentially error-prone, because "last index value" and
"length of input string" are two different concepts, and often have
different values.  They only have the same value here, because the first
index value of the string happens to be 1.




  parent reply	other threads:[~1998-12-05  0:00 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-12-05  0:00 newbie problem Graeme Wallace
1998-12-04  0:00 ` Mats Weber
1998-12-05  0:00   ` Matthew Heaney
1998-12-04  0:00 ` David Botton
1998-12-04  0:00 ` Gautier.DeMontmollin
1998-12-04  0:00 ` Simon Bracken
1998-12-04  0:00   ` Marin David Condic
1998-12-04  0:00 ` Marin David Condic
1998-12-05  0:00 ` Matthew Heaney [this message]
1998-12-07  0:00 ` Jeff Carter
  -- strict thread matches above, loose matches on Subject: below --
2009-05-13 14:16 Olivier Scalbert
2009-05-13 14:54 ` Martin
2009-05-13 15:20   ` Olivier Scalbert
2009-05-13 15:14 ` Adam Beneschan
2009-05-13 15:54   ` Olivier Scalbert
2009-05-13 15:44 ` Ludovic Brenta
2009-05-13 16:03   ` Olivier Scalbert
2009-05-13 18:00 ` Olivier Scalbert
2009-05-13 18:51   ` Martin
2009-05-13 19:45     ` sjw
2009-05-13 19:48     ` Olivier Scalbert
2009-05-14 19:41       ` sjw
2009-05-15  5:02         ` Olivier Scalbert
2009-05-15  8:05         ` Jean-Pierre Rosen
2009-05-18 10:23         ` Olivier Scalbert
2009-05-18 10:48           ` Martin
2009-05-18 10:54             ` Olivier Scalbert
2009-05-18 10:52           ` Ludovic Brenta
2009-05-18 11:09             ` Olivier Scalbert
2009-05-14 22:39       ` Jeffrey R. Carter
2009-05-14  2:59 ` anon
replies disabled

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