Re: Discriminants.

Ludovic Brenta <[email protected]>
Newsgroups gmane.comp.lang.ada.france
Message-ID <[email protected]>
Pascal writes:
> Bonjour, petite question sur les discriminants:
> Je souhaite écrire:
> type TÉléments is array (Natural range <>) of Integer;
> type Typ (Max : Natural := 256) is  record
> 	Éléments : TÉléments(0..Max-1):=(others=>0);
> 	end record;
> X : Typ(20);
> Mais GNAT me renvoi :
> "discriminant in constraint must appear alone"
>
> Bien, je n'ai pas trouvé cette contrainte dans le § "3.7
> Discriminants" du manuel, mais les exemples proposés sont conformes.
>
> Bien, je pourrais évidemment déclarer:
> type TÉléments is array (Natural range <>) of Integer;
> type Typ (Max : Natural := 255) is  record
> 	Éléments : TÉléments(0..Max):=(others=>0);
> 	end record;
> X : Typ(20-1);
>
> Mais, pourquoi ne pas pouvoir écrire Max-1 ?

ARM 3.7(19): A constraint that appears within the definition of a
discriminated type depends on a discriminant of the type if it names the
discriminant as a bound or discriminant value.

Il n'y a donc que deux formes possibles: soit le discriminant du type
englobant est l'une des bornes du composant, soit il est le discriminant
du composant.  Il ne peut donc pas apparaître comme l'un des éléments
d'une expression.

Attention aussi avec ta définition de type, elle peut occuper 2 Go de
mémoire.  Voir
http://groups.google.com/group/fr.comp.lang.ada/msg/ab5622e10628fce9 et
les réponses.

-- 
Ludovic Brenta.
_______________________________________________
Site WWW de l'association Ada-France: http://www.ada-france.org/
[email protected]
http://www.ada-france.org/mailman/listinfo/ada-france
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.