Discussion:
aide pour apprendre à parler le gnat
(trop ancien pour répondre)
Mehdi Saada
2017-12-15 23:27:50 UTC
Permalink
J'ai deux lignes problématiques:
SET_COL(ADA.TEXT_IO.COUNT(INDEX(BS1, ALPHANUMERIC_SET, OUTSIDE)));
donnant:ts_bounded.adb:90:17: "COUNT" is not visible
ts_bounded.adb:90:17: multiple use clauses cause hiding
ts_bounded.adb:90:17: hidden declaration at a-textio.ads:64
ts_bounded.adb:90:17: hidden declaration at a-strbou.ads:288, instance at p_bounded_80.ads:12
ts_bounded.adb:90:17: hidden declaration at a-strbou.ads:283, instance at p_bounded_80.ads:12
ts_bounded.adb:90:17: hidden declaration at a-strbou.ads:278, instance at p_bounded_80.ads:12

pourtant j'ai bien with et use ADA.strings et ada.text_io, donnant accès à la fonction ET au type count. Pourquoi le compilo ne voit pas que c'est bien sûr le type COUNT ici, puisqu'il est requis par SET_COL ?

et cette ligne: OVERWRITE(BS1, 1, String'(5 * ' '));
donne:ts_bounded.adb:103:37: expected type "Standard.String"
ts_bounded.adb:103:37: found private type "Ada.Strings.Bounded.Bounded_String" from instance at p_bounded_80.ads:12

Si je remplace String'(5*' ') par seulement 5*' ', le compilo ajoute au message:
ts_bounded.adb:103:29: ==> in call to "Overwrite" at a-strbou.ads:364, instance at p_bounded_80.ads:12
Mehdi Saada
2017-12-15 23:36:21 UTC
Permalink
Ici j'ai quelque chose de similaire, qui m'étonne vraiment beaucoup. L'affectation
BS3 := TO_BOUNDED_STRING(30 * 'd');
me renvoit: ts_bounded.adb:44:37: expected type "Standard.String"
ts_bounded.adb:44:37: found private type "Ada.Strings.Bounded.Bounded_String" from instance at p_bounded_80.ads:12

C'est vrai que l'opérateur binaire * est aussi défini dans ADA.STRINGS.BOUNDED mais c'est loin d'être ambigu ici: TO_BOUNDED_STRING ne peut demander qu'un STRING, * devrait être choisi en conséquence !
Mehdi Saada
2017-12-16 11:37:35 UTC
Permalink
tout est bon grâce à JP.Rosen, béni soit son nom.
Je ne savais pas qu'il n'y avait pas de "résolution automatique" pour les types, mais seulement pour les sous-programmes et assimilés. Ce genre de détail peut certainement s'apprendre dans un livre, je l'ai sûrement déjà lu, mais ça ne paie pas de mine alors on ne le retient pas. Jusqu'à ce qu'on soit confronté au problème, et ça reste pour de bon ;-)
Continuer la lecture sur narkive:
Loading...