Tu es bien en Ada95, au moins ??
Version imprimable
Alors tu as un problème : le modificateur "Access" a été rajouté en Ada95 justement pour pallier ce manque, cela définit un "pointeur sur"... En clair, c'est un type de données, c'est donc compatible avec les fonctions.
Si ça ne marche pas chez toi, c'est anormal.
C'est donc vrai qu'en Ada vieux, une "fonction" ne peut rien faire d'autre que retourner une valeur, tandis qu'une "procédure" peut tout faire sauf ça?
Bien joué le DoD... :roll:
PS: Est-ce qu'une fonction peut avoir des effets de bord, ou au moins appeler une procédure?
Tu peux lui passer une adresse, c'était la technique utilisée en Ada83 pour obtenir ce comportement... Par exemple :Mais bon, c'est assez sale quand même. Le modificateur "Access" en Ada95 permet d'éviter ce genre de bidouille.Code:
1
2
3
4
5 Function Truc ( PParameter : In System.Address ) Return Machin Is LocalParameter : Bidule ; For LocalParameter'Address Use PParameter ; Begin ....
Et, bien sûr, tu peux appeler des procédures au sein d'une fonction sans soucis.
Et bien débrouilles-toi seul, alors, vu que tu le prends sur ce ton, que veux-tu ?