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