comp.lang.ada
 help / color / mirror / Atom feed
From: Matthew Heaney <matthew_heaney@acm.org>
Subject: Re: Beginner's questions
Date: 1999/05/02
Date: 1999-05-02T00:00:00+00:00	[thread overview]
Message-ID: <m3k8urxorq.fsf@mheaney.ni.net> (raw)
In-Reply-To: 372da49c.12366381@news.rwth-aachen.de

marcoschmidt@geocities.com (Marco Schmidt) writes:

> 1) I couldn't find out how to use bitwise operations "and" and "or"
> (which would be "and" / "or" in Pascal and "&" / "|" in C). Do I have
> to include a certain package?

Those operations predefined for all modular types.  Were you using an
integer type?


> 2) I want to use a fixed-size array of constant strings to store some
> names which do not all have the same length, but no name is longer
> than 20 characters. My approach looks like this:
> 
>   type t_my_array is array(0..17) of String;
> 
>   names : constant t_my_array := ("string 1", "string 2", ...,
>     "string 18");
> 
> The compiler doesn't like this (unconstrained element type). If I
> replace String with String(0..19), it is compiled, but a runtime error
> is raised. How should I do it?


You could use an instantation of
Ada.Strings.Bounded.Generic_Bounded_Length.

Or you could use Ada.Strings.Unbounded.

Or you could use a discriminated record:

  subtype Name_Length_Range is Natural range 0 .. 20;

  type Name_Buffer (Length : Name_Length_Range := 0) is
    record
        Name : String (1 .. Length);
    end record;

  function "+" (R : String) return Name_Buffer is
  begin
    return (R'length, R);
  end;

  type Name_Array is array (Positive range <>) of Name_Buffer;

  Names : Name_Array :=
    (+"Heckle",
     +"Jeckle",
     +"Marvelous",
     +"Magpies",
     +"Let's have some fun",
     +"With name arrays");



      




  reply	other threads:[~1999-05-02  0:00 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-05-02  0:00 Beginner's questions Marco Schmidt
1999-05-02  0:00 ` Matthew Heaney [this message]
1999-05-03  0:00   ` Marco Schmidt
1999-05-03  0:00     ` Matthew Heaney
1999-05-03  0:00 ` Andreas Winckler
1999-05-03  0:00   ` Matthew Heaney
1999-05-03  0:00     ` Andreas Winckler
1999-05-03  0:00       ` David Starner
1999-05-04  0:00         ` Andreas Winckler
1999-05-04  0:00           ` Larry Kilgallen
1999-05-04  0:00             ` Martin C. Carlisle
1999-05-04  0:00               ` Larry Kilgallen
1999-05-05  0:00                 ` Andreas Winckler
1999-05-03  0:00 ` dennison
1999-05-04  0:00   ` Tucker Taft
1999-05-04  0:00     ` dennison
1999-05-10  0:00       ` Tucker Taft
1999-05-04  0:00 ` czgrr
1999-05-04  0:00   ` Nick Roberts
1999-05-07  0:00     ` Robert Dewar
1999-05-07  0:00       ` David Starner
1999-05-08  0:00         ` ak
replies disabled

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