Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1395 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  peut etre un probleme de syntaxe mais bon...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

peut etre un probleme de syntaxe mais bon...

n°302353
muad_dib
Posté le 05-02-2003 à 15:21:20  profilanswer
 

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?

mood
Publicité
Posté le 05-02-2003 à 15:21:20  profilanswer
 

n°302462
dsls
Posté le 05-02-2003 à 16:39:55  profilanswer
 

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.

n°302590
muad_dib
Posté le 05-02-2003 à 19:20:40  profilanswer
 

ouh la ca a pas l'air simple, et je crois pas avoir compris... :/
 
dans mon code j'ai ca:

Code :
  1. type Pointer is new Controlled
  2.      with record
  3.         Id : Natural range 0 .. Pointer_Max;
  4.      end record;


dans un .ads, et ca:

Code :
  1. The_Nil_Pointer : constant Pointer := (Controlled with Id => 0);


dans un fichier adb
 
et apres dans mon fichier principal :

Code :
  1. with pointer_adt;
  2. procedure test is
  3.    package test1 is new pointer_adt(index => natural, element => character);
  4.    use test1;
  5.    choix : natural := 0;
  6. begin
  7. ...


 
et je capte pas bien où est la faute...

n°302604
muad_dib
Posté le 05-02-2003 à 19:35:53  profilanswer
 

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

n°302695
dsls
Posté le 05-02-2003 à 21:44:12  profilanswer
 

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 :
  1. package test1 is new pointer_adt(index => natural, element => character);
  2. use test1;
  3. procedure test is
  4.   choix : natural := 0;
  5. begin
  6. ...

n°302909
muad_dib
Posté le 06-02-2003 à 09:28:18  profilanswer
 

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


Message édité par muad_dib le 06-02-2003 à 09:35:37
n°303009
dsls
Posté le 06-02-2003 à 10:53:10  profilanswer
 

muad_dib a écrit :


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


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 :
  1. package body test is
  2.   package test1 is new ...
  3.   procedure test is ...
  4. end test


... avec le test.ads qui exporte la procédure test
 
et dans test.adb :

Code :
  1. with test_pkg;
  2.   procedure test is
  3.   begin
  4.     test_pkg.test;
  5.   end test;


En général j'évite de mettre trop de code dans la procédure principale des programmes, ça évite quelques soucis  :D

n°303199
muad_dib
Posté le 06-02-2003 à 15:06:50  profilanswer
 

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

n°904881
Mindhacker​94
Shlaguevuck
Posté le 22-11-2004 à 17:54:20  profilanswer
 

ce topic est plutot interessant, mais dis donc Muad_Dib, tu ne serais pas en licence info à créteil ????


---------------
<<<  TAGAZOK >>>

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  peut etre un probleme de syntaxe mais bon...

 

Sujets relatifs
[PROBLEME] Besoin d'aide pour un petit programme basicUn petit probleme de syntaxe ... .LinkedCell
[XML] comparaison de syntaxe, probleme d'occurrence[PHP & HTML] nouveau problème de syntaxe (résolu)
HTML - JAVASCRIPT : Ptit problème de syntaxe[Langage perso] Probleme de syntaxe.
Petit problème de syntaxe[PHP] probleme de syntaxe
Dephi - Problème de syntaxe tout con !URGENT asp (vb) problème de syntaxe
Plus de sujets relatifs à : peut etre un probleme de syntaxe mais bon...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR