comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Something I don't understand
Date: Sat, 15 Feb 2014 20:39:34 -0500
Date: 2014-02-15T20:39:34-05:00	[thread overview]
Message-ID: <wcc1tz3al9l.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 0b358700-871b-4603-addd-65e07c7d59e5@googlegroups.com

Laurent <daemon2@internet.lu> writes:

> Now it works as I think it should.

Good.

FWIW, Text_IO is a poor design, and I don't blame you for having
trouble with it!

Some stylistic comments on the code below:

Exceptions are for dealing with cases where one piece of code detects
a (possible) error, and another piece of code decides whether it
really is an error, and how to deal with it.  That's not the
case here, so should be written without any exceptions.

No need for a loop name.

You should use typical style, so other Ada programmers can read your
code more easily:  lower case keywords, Max_Name instead of MaxName.
(Or Max_Name_Length?)  Space after "--".

S should declared "constant".  You should enable warnings in GNAT
that detect this mistake.

Why should there be a limit on the length of the name?  Maybe you have
a good reason, but usually such arbitrary limits are a bad idea.

> Name : LOOP            
>             BEGIN --exception handler block
>                Ada.Text_IO.Put ("Name (1 - ");                  
>                Ada.Integer_Text_IO.Put (Item => MaxName, Width => 1);
>                Ada.Text_IO.Put (Item => " characters) >"); 
>                
>                DECLARE
>                   S : String := Ada.Text_IO.Get_Line;
>                
>                BEGIN
>                   IF S'Length = 0 THEN
>                      RAISE Name_Too_Short;
>                   ELSIF S'Length <= MaxName THEN
>                      Item.Name (1 .. S'Length) := S;                     
>                   ELSE RAISE Name_Too_Long;   
>                   END IF;
>                   
>                   EXIT; -- correct Name                  
>
>                EXCEPTION
>                      
>                   WHEN Name_Too_Short =>                     
>                      Ada.Text_IO.Skip_Line;
>                      Ada.Text_IO.Put (Item => "Name too short!");                     
>                      Ada.Text_IO.New_Line;                     
>                   WHEN Name_Too_Long =>                     
>                      Ada.Text_IO.Skip_Line;                     
>                      Ada.Text_IO.Put_Line (Item => "Name too long!");                     
>
>                END; -- exception handler
>             END;
>          END LOOP Name;

  parent reply	other threads:[~2014-02-16  1:39 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-13 23:57 Something I don't understand Laurent
2014-02-14  0:18 ` adambeneschan
2014-02-14  7:05   ` Charles H. Sampson
2014-02-15 15:27   ` Laurent
2014-02-15 19:10     ` Laurent
2014-02-15 20:05       ` Niklas Holsti
2014-02-15 21:16         ` Laurent
2014-02-15 21:40       ` Jeffrey Carter
2014-02-16  1:39       ` Robert A Duff [this message]
2014-02-16  9:08         ` Text_IO, was: " Simon Clubley
2014-02-16  9:43           ` Dmitry A. Kazakov
2014-02-16 16:57             ` Dennis Lee Bieber
2014-02-16 16:17           ` Robert A Duff
2014-02-17 12:52             ` Simon Clubley
2014-02-17 15:32               ` G.B.
2014-02-17 15:35                 ` G.B.
2014-02-17 17:34                 ` Mike H
2014-02-17 16:59               ` Niklas Holsti
2014-02-17 17:17                 ` Dmitry A. Kazakov
2014-02-17 17:42                   ` Niklas Holsti
2014-02-17 19:55                     ` Dmitry A. Kazakov
2014-02-18  7:14                       ` Niklas Holsti
2014-02-18  8:40                         ` Dmitry A. Kazakov
2014-02-18  9:00                           ` Niklas Holsti
2014-02-18  9:31                             ` Dmitry A. Kazakov
2014-02-19  8:36                               ` Niklas Holsti
2014-02-19  9:40                                 ` Dmitry A. Kazakov
2014-02-19 13:20                                   ` Niklas Holsti
2014-02-19 14:13                                     ` Dmitry A. Kazakov
2014-02-19 15:37                                       ` Georg Bauhaus
2014-02-19 16:32                                         ` Laurent
2014-02-19 17:46                                           ` Simon Clubley
2014-02-20  2:39                                         ` Dennis Lee Bieber
2014-02-20 11:44                                           ` G.B.
2014-02-19 21:45                                       ` Niklas Holsti
2014-02-20  9:52                                         ` Dmitry A. Kazakov
2014-02-20 18:19                                           ` Niklas Holsti
2014-02-19 15:06                                     ` Robert A Duff
2014-02-19 17:03                                       ` Niklas Holsti
2014-02-19 22:30                                         ` Robert A Duff
2014-02-17 18:13                 ` Simon Clubley
2014-02-17 20:09                   ` Dmitry A. Kazakov
2014-02-18  7:50                     ` Georg Bauhaus
2014-02-18  8:28                       ` Dmitry A. Kazakov
2014-02-17 20:22                   ` Niklas Holsti
2014-02-18  0:50                     ` Simon Clubley
2014-02-18  6:56                       ` Niklas Holsti
2014-02-18  8:04                         ` Georg Bauhaus
2014-02-19 22:01                     ` Robert A Duff
2014-02-20  8:25                       ` Dmitry A. Kazakov
2014-02-20 15:54                         ` Robert A Duff
2014-02-20 17:54                           ` Dmitry A. Kazakov
2014-02-20 20:45                       ` Niklas Holsti
2014-02-19 21:52                   ` Robert A Duff
2014-02-20  0:50                     ` Simon Clubley
2014-02-19 21:46                 ` Robert A Duff
2014-02-20  0:09                   ` Jeffrey Carter
2014-02-20  1:09                     ` Simon Clubley
2014-02-20  7:06                       ` Niklas Holsti
2014-02-20 13:05                         ` Simon Clubley
2014-02-20 11:51                       ` G.B.
2014-02-20 12:53                         ` Simon Clubley
2014-02-21 11:50                       ` Brian Drummond
2014-02-23 21:37                         ` AdaMagica
2014-02-23 23:23                           ` Bill Findlay
2014-02-24  4:29                           ` AdaMagica
2014-02-24 12:22                           ` Brian Drummond
2014-02-24 19:03                             ` AdaMagica
2014-02-20 20:02                   ` Niklas Holsti
2014-02-19 21:15               ` Robert A Duff
2014-02-19 22:01                 ` Simon Clubley
2014-02-16 14:50         ` Mike H
2014-02-17 16:09         ` Laurent
2014-02-17 17:42           ` Mike H
2014-02-18  1:05             ` Dennis Lee Bieber
2014-02-17 22:31           ` Jeffrey Carter
2014-02-19 12:51             ` Laurent
replies disabled

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