From: joakimds@kth.se
Subject: Re: Anonymous array not allowed as components
Date: Fri, 1 Nov 2019 02:34:02 -0700 (PDT)
Date: 2019-11-01T02:34:02-07:00 [thread overview]
Message-ID: <1a0b573e-11af-4e4c-9ccf-9a757ad8d970@googlegroups.com> (raw)
In-Reply-To: <5dbbeda6$0$1458$e4fe514c@news.kpn.nl>
Den fredag 1 november 2019 kl. 09:32:42 UTC+1 skrev L Dries:
> I have an need for an array of Unbounded_Strings in which i define the
> elements.
>
> I declared it as:
>
> Debug_Proc : array (1 .. nr_Proc) of Unbounded_String :=
> (Debug_Proc(Lan),
> To_Unbounded_String("Only"),
> To_Unbounded_String("Empty_Buffer"),
> ...
> etc.
>
> Then I got the message:
>
> 65:22 Anonymous array not allowed as components
> This results i a position just before "array"
>
> The value nr_Proc is defined in another package.
> Debug_Proc(Lan) is an Unbounded String
> I tried to replace nr_Proc by a value. The same result.
> I tried to replave the value of the first Unbounded String by "--",
> again no result
> I tried set it as an constant array, also no result.
>
> What do I do wrong?
> --
> L. Dries
Hello L. Dries,
Unbounded_String is well-known for being "slow" because it does unnecessary heap-allocations. To avoid performance penalty the XString type has been defined in the GNATColl library. The point is that one should have very good reasons to use Unbound_String in one's application and not use it needlessly.
In your case what you want is to map each integer in an interval to a specific String. If that's the case I recommend taking advantage of expression functions and case statements introduced in Ada 2012:
type Index is new Integer range 1 .. nr_Proc;
function Debug_Proc (I : Index) return String is
(case I is
when 1 => "Only",
when 2 => "Empty_Buffer", ...);
or maybe it is:
function Debug_Proc (I : Index) return String is
((case I is
when 1 => "Only",
when 2 => "Empty_Buffer", ...));
The compiler will tell you.
Best regards,
Joakim
next prev parent reply other threads:[~2019-11-01 9:34 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-01 8:32 Anonymous array not allowed as components L Dries
2019-11-01 9:34 ` joakimds [this message]
2019-11-01 10:00 ` L Dries
2019-11-01 10:47 ` Jeffrey R. Carter
2019-11-01 9:34 ` AdaMagica
2019-11-01 9:56 ` L Dries
2019-11-01 10:33 ` L Dries
2019-11-01 15:55 ` AdaMagica
2019-11-01 10:41 ` Jeffrey R. 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