comp.lang.ada
 help / color / mirror / Atom feed
From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Problems with String processing
Date: Sat, 23 Oct 2010 23:24:14 +0300
Date: 2010-10-23T23:24:14+03:00	[thread overview]
Message-ID: <8igujeFc2tU1@mid.individual.net> (raw)
In-Reply-To: <8igu5kF70sU1@mid.individual.net>

George wrote:
> Hi All,
> 
> I have some problems with string processing. My program looks like this:
> 
> begin
> -- Ada.Command_Line.Argument_Count is "0" if
> -- a) Command_Line.Argument_Count is not implemented (Compiler, OS)
> -- b) no arguments given
> if Ada.Command_Line.Argument_Count > 0 then
>    for counter in 1..Ada.Command_Line.Argument_Count loop
>       Arg = Ada.Characters.Handling.To_Upper(Ada.Command_Line.Argument
> (counter)); -- this assignment is the problem

Firstly, that isn't an assignment, since you wrote "=". You should write 
":=" for an assignment.

Secondly, as you have now learned, the Ada String type is a fixed-length 
string. The simplest solution is to declare the Arg variable as a 
constant String that is given its value (and length) in the declaration 
itself:

    declare
       Arg : constant String := Ada.Characters.Handling.To_Upper (
          Ada.Command_Line.Argument (counter));
    begin

>       if Arg = "ADA83" then
>          Ada83;
>       elsif Arg = "ADA95" then
>          Ada95;
>       elsif Arg = "ADA2005" then
>          Ada2005;
>       elsif Arg = "ATTRIBUTES" then
>          Attributes;
>       elsif Arg = "ALL" then
>          Ada83;
>          Ada95;
>          Ada2005;
>          Attributes;
>          Sources;
>          Author;
>       else -- unknown argument
>          Ada.Text_IO.put_line("Given Argument is unknown!");
>       end if;

    end;

>    end loop;
> 
> The assignment Arg = Ada.Characters.Handling.To_Upper
> (Ada.Command_Line.Argument(counter)); will not work due to a CONSTRAINT 
> ERROR. The problem is that the command line arguments given are of 
> different length. Ada expects the string to match exactly the length of 
> the defined variable "Arg" with 10 characters.
> 
> How could I solve that problem?

Another solution is to use Ada.Strings.Unbounded.Unbounded_String, which 
is the main Ada type for variable-length strings.

HTH,

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
       .      @       .



  reply	other threads:[~2010-10-23 20:24 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-23 20:16 Problems with String processing George
2010-10-23 20:24 ` Niklas Holsti [this message]
2010-10-23 20:25 ` Dmitry A. Kazakov
2010-10-23 20:43 ` George
2010-10-23 23:59 ` Jeffrey Carter
replies disabled

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