comp.lang.ada
 help / color / mirror / Atom feed
From: Jeffrey Carter <jrcarter@acm.org>
Subject: Re: Newbie question on Ada TExt_IO
Date: Thu, 03 Oct 2002 19:05:57 GMT
Date: 2002-10-03T19:05:57+00:00	[thread overview]
Message-ID: <3D9C9506.1010803@acm.org> (raw)
In-Reply-To: 93d4dcd4.0210031020.b0cca2b@posting.google.com

Justin wrote:
> I'm doing TextIO from the command prompt.  But I'm having difficulty
> validating the input.  For example I'm asking the user to enter a
> number, let's say I'm expecting an integer between 1 and 6
> 
> X:Integer;
> ...
> Put("Please enter a number between 1 and 6);
> Get(x);
> 
> But what if they give me 'abc' or 4.44 or simply
> 1230000000000000000000000000000000000000000000000000000000000000000000000
> 
> How can I handle this?  From my take on what I've read I should avoid
> exception handling for things I'm not expecting, so I've ruled out
> exceptions, that leaves me with obtaining a value of generic type and
> evalutating the type at run-time...how can I do this?  Is this the
> right strategy?

The first rule when doing interactive input is to always read an entire 
line using Ada.Text_IO.Get_Line or a function that returns String such 
as PragmARC.Get_Line. Then extract the value using 'Value or one of the 
Get subprograms in Ada.Text_IO[.Integer_IO | .Float_IO | ...] that take 
a String parameter. There are a number of subtle errors frequently 
encountered with Text_IO that this avoids.

I think you misunderstood what you read about using exceptions. You 
should avoid exceptions for things you ARE expecting. Using them for 
exceptional circumstances is what they're for. In this case, you're 
pretty much forced to do exception handling, unless you plan to 
duplicate the parsing that already exists in 'Value and Ada.Text_IO.

The ARM is not very easy to read. The exceptions are Annex A, which 
defines the standard library, and Annex K, which defines the standard 
attributes. Everyone should be familiar with those.

The PragmAda Reusable Components are available from

http://home.earthlink.net/~jrcarter010/pragmarc.htm

-- 
Jeff Carter
"I blow my nose on you."
Monty Python & the Holy Grail




  parent reply	other threads:[~2002-10-03 19:05 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-10-03 18:20 Newbie question on Ada TExt_IO Justin
2002-10-03 18:50 ` Matthew Heaney
2002-10-03 19:05 ` Jeffrey Carter [this message]
2002-10-03 19:35 ` David C. Hoos
2002-10-03 19:35 ` tmoran
2002-10-03 19:43 ` Preben Randhol
2002-10-03 19:55   ` Matthew Heaney
2002-10-03 20:07     ` Preben Randhol
2002-10-04  2:42 ` SteveD
2002-10-04 17:49   ` Justin Birtwell
2002-10-04 18:00     ` David C. Hoos
2002-10-04 18:04       ` Preben Randhol
2002-10-04 18:00     ` Preben Randhol
2002-10-04 18:02       ` Preben Randhol
2002-10-04 18:34     ` tmoran
2002-10-04 17:34 ` Justin Birtwell
2002-10-04 17:58   ` Preben Randhol
2002-10-04 18:13   ` tmoran
2002-10-04 20:07   ` Jeffrey Carter
2002-10-07  8:26     ` Fraser Wilson
2002-10-07 19:44       ` Jeffrey Carter
2002-10-05  2:43   ` SteveD
2002-10-05  5:25     ` tmoran
  -- strict thread matches above, loose matches on Subject: below --
2002-10-07  6:01 Grein, Christoph
2002-10-07  8:27 Grein, Christoph
2002-10-07 11:48 ` Fraser Wilson
2002-10-07 12:46   ` Robert A Duff
replies disabled

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