Re: Initialiser une chaine de taille contrainte.

Ludovic Brenta <[email protected]>
Newsgroups gmane.comp.lang.ada.france
Message-ID <[email protected]>
Pascal <[email protected]> writes:
> Bonjour,
>
> Voici une question somme toute basique voire pour "débutant" mais les réponses trouvées ne me satisfont pas :
> comment initialiser simplement une chaine de caractère contrainte en taille avec une valeur chaine (càd "toto") ?
>
> Je pourrais utiliser les chaines non contraintes, les très utiles Unbounded_String ou le faire en 2 temps : déclaration et affectation avec Ada.Strings.Fixed.Move.
>
> Quel est le problème ?
> Prenons le type suivant :
>    type TTabChaine is array (1 .. 2) of String (1 .. 13);
> Initialisons une constante de ce type avec des valeurs chaines de
> longueurs variables et terminées par Ascii.NUL :

Ce sont des chaînes de longueur fixe, 13 carctères, et le fait que l'un
d'eux est un ASCII.NUL n'a aucune influence sur la longueur.

> Je dois écrire :
>    NomsOK : constant TTabChaine :=
>      (('F', '1', '2', '.', 't', 'x', 't', ASCII.NUL, others => ' '),
>       ('g', 'n', 'a', 't', '.', 'e', 'x', 'e', ASCII.NUL, others => ' '));
>
> Ce qui n'est, accordons le, vraiment pas lisible.

type String_Access is access String;
type String_Array is array (1 .. 2) of String_Access;
Strings : constant String_Array := (1 => new String'("F12.txt"),
                                    2 => new String'("gnat.exe"));

et ne surtout pas ajouter d'ASCII.NUL sauf, éventuellement, au moment de
passer les chaînes à un sous-programme importé du C.  Dans ce dernier
cas, utiliser Interfaces.C.To_C (...).

-- 
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.