Re: Initialiser une chaine de taille contrainte.

Xavier Nicollin <[email protected]>
Newsgroups gmane.comp.lang.ada.france
Message-ID <[email protected]>
Bonjour,

A celle-ci je sais répondre :

Le 30.12.2011, Pascal <[email protected]> écrit :

> Bref, ma question voulait surtout illustrer qu'Ada ne permet pas de  
> mettre un littéral chaine dans un agrégat chaine (!) :
> toto : constant String := ('$', "toto", '$'); -- erreur sur "toto"
>
> Pourtant cette construction ne me choque pas outre mesure.
> Pourquoi n'est-elle pas légale ?

Car "toto" est une abréviation de ('t', 'o', 't', 'o') et est donc  
déjà un agrégat (ou un tableau si tu veux)... Essaie
toto : constant String := '$' & "toto" & '$';

Par contre, ça ne résout pas ton problème initial (à cause du  
'others'). On pourrait envisager d'écrire :
NomsKO : constant TTabChaine :=(
        "F12.txt"  & ASCII.NUL & (others => ' '),
        "gnat.exe" & ASCII.NUL & (others => ' '));
voire
NomsKO : constant TTabChaine :=(
        "F12.txt"  & (ASCII.NUL, others => ' '),
        "gnat.exe" & (ASCII.NUL, others => ' '));
mais c'est interdit, même si on pourrait imaginer (pour la  
concaténation) une résolution de longueur en présence d'un type  
contraint et d'une seule clause 'others'...

Sinon, tes Strings ressemblent furieusement à des Bounded_String...

Cordialement,
Xavier

-- 
| Institut polytechnique de Grenoble  -  Ensimag
| Verimag -- Centre Equation -- 2, ave. de Vignate -- F-38610 Gières
_______________________________________________
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.