peut etre un probleme de syntaxe mais bon... - Ada - Programmation
Marsh Posté le 05-02-2003 à 16:39:55
Un type contrôlé est un type dont tu peux "contrôler" le cycle de vie. Plus simplement, pour un type controlé, tu peux surcharger les méthodes Initialize, Adjust et Finalize, qui seront appelées à chaque création, mise à jour et destruction des instances de ce type.
L'erreur levée vient probablement du fait que ton type a été défini localement à une procédure/fonction, ce qui n'est pas permis par la spec. Un type contrôlé doit être connu pendant toute l'exécution du programme. Il faut donc le déclarer au niveau d'un package.
Marsh Posté le 05-02-2003 à 19:20:40
ouh la ca a pas l'air simple, et je crois pas avoir compris...
dans mon code j'ai ca:
Code :
|
dans un .ads, et ca:
Code :
|
dans un fichier adb
et apres dans mon fichier principal :
Code :
|
et je capte pas bien où est la faute...
Marsh Posté le 05-02-2003 à 19:35:53
ah oui et sinon, je suis pour ainsi dire sur, que l'erreur vient de mon programme test et pas des sources
autrement dit c moi qui doit mal instancier tout ca sans doute
Marsh Posté le 05-02-2003 à 21:44:12
Si tu instancies ton paquetage générique dans la partie déclarative de ta fonction, ça revient à définir un type contrôlé comme local à ta fonction => tu rentres dans le cas que j'ai expliqué plus haut, et donc l'erreur du compilo.
Solutions : soit tu sors ton instanciation de la procédure, soit tu fais un nouveau paquetage que tu appelles avec ta procédure test.
Pour la première solution, il devrait suffire d'écrire ça à la place de ta procédure (non testé, mais ça devrait être bon) :
Code :
|
Marsh Posté le 06-02-2003 à 09:28:18
ahhhh ok
suffisait juste de mettre ca en dehors de la procedure alors
maintenant j'comprends mieux ta premiere reponse
j suis bete des fois moi
en tk merci bcp !
hum... et ben en fait ca marche pas bcp mieux
ce coup ci il me dit qu'il manque le mot "body"
il doit croire que je veux implementer le package a cet endroit...
Marsh Posté le 06-02-2003 à 10:53:10
muad_dib a écrit : |
Hmmm... dans ce cas il faut que tu crées un autre paquetage dans lequel tu instancies ton paquetage générique, et où tu mets ta procédure test, puis tu appelles cette procédure depuis ton programme principal ... genre :
test_pkg.adb
Code :
|
... avec le test.ads qui exporte la procédure test
et dans test.adb :
Code :
|
En général j'évite de mettre trop de code dans la procédure principale des programmes, ça évite quelques soucis
Marsh Posté le 06-02-2003 à 15:06:50
ouh la la c le bazar qand meme
bon j'essaye ca des que j'ai fini mon debug en C sur un autre truc
Marsh Posté le 22-11-2004 à 17:54:20
ce topic est plutot interessant, mais dis donc Muad_Dib, tu ne serais pas en licence info à créteil ????
Marsh Posté le 05-02-2003 à 15:21:20
j'ai l'erreur suivante a la compilation : controlled type must be declared at the library level
seulement je ne sais pas ce qu'est un "controlled"
j'en ai un dans les fichiers sources, mais je sais meme pas a quoi il sert
qqn le saurait?