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

  FORUM HardWare.fr
  Programmation
  Ada

  Packages et liste générique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Packages et liste générique

n°1356243
tris
Posté le 28-04-2006 à 19:15:54  profilanswer
 

salut tout le monde, j'ai (de nouveau) un pti probleme avec une approche différente d'un projet sur lequel vous m'aviez déja bien éclairé...
 
voila le topo :
 
J'ai un package listegen qui regroupe les fonctions sur les listes, et qui commence avec les parametres de généricité suivants:
 

Code :
  1. generic
  2. type TElement is private;
  3. with procedure écrire (x : in TElement);
  4. with procedure lire (x : out TElement);
  5. neutre : telement;
  6. with function egal (x,y : in TElement) return boolean;
  7. package PlistGen is
  8. ..........


 
et 2 autres packages : Pmot et Pphrase
 

Code :
  1. with plistgen;
  2. with text_io; use text_io;
  3. package pmot is
  4. type tmot is private;
  5. procedure saisie_mot (mot: out tmot);
  6. procedure affiche_mot (mot: in tmot);
  7. function mots_egaux (mot1, mot2 : tmot) return boolean;
  8. private
  9. package PListeCar is new Plistgen (character, put, get, ' ',"=" );
  10. use plistecar;
  11. type tmot is new Plistecar.tptrcellule;
  12. end;


 

Code :
  1. with plistgen;
  2. with pmot; use Pmot;
  3. with text_io; use text_io;
  4. package Pphrase is
  5. type tphrase is private;
  6. procedure saisie_phrase (phrase: out tphrase);
  7. procedure affiche_phrase (phrase: in tphrase);
  8. private
  9. package PListeMot is new Plistgen (tmot, affiche_mot, saisie_mot, <<<<<MOT NUL!!!>>>>> ,mots_egaux);
  10. use plisteMot;
  11. type tphrase is new PlisteMot.tptrcellule;
  12. end;


 
mon problème : déclarer une variable de type Tmot qui ne contiendrait qu'un point '.' pour coller au parametre de généricité "Neutre"

mood
Publicité
Posté le 28-04-2006 à 19:15:54  profilanswer
 

n°1356263
Profil sup​primé
Posté le 28-04-2006 à 20:02:53  answer
 

Bonjour tris,
 
je suis pas très fort en info mais :
 
Ne pourais-tu pas declarer
 
 mot_neutre : tmot; dans ton paquetage "pmot"
initialiser mot_neutre à '.'
faire un preelaborate
 
mais je parle de queleque chose que je connais pas en fait.... faut que je test

n°1356274
Profil sup​primé
Posté le 28-04-2006 à 20:20:23  answer
 

Non, on peut pas, et une fonction qui retourne mot_neutre ?,
t'aurais pas le reste du code de plistgen ?

n°1356320
tris
Posté le 29-04-2006 à 00:32:33  profilanswer
 

j'ai essayé les 2 mais on ne peut pas déclarer mot_neutre : tmot; dans pmot ou alors je l'ai mis aux mauvais endroits...
J'ai essayé une procédure mais la pareil il faudrai exécuter cette procédure qui rendrait mot_neutre dans pmot, et je ne vois pas comment faire ....
 
Je pense qu'on peut le déclarer directement mais qu'il faut le mettre au bon endroit ... pour le package pmot, le probleme ne se posait pas car le caractère neutre es l'espace qui s'inscrit directement dans l'intanciation ' '
 
Pour le reste de plistgen il est dans ce post:http://forum.hardware.fr/hardwaref [...] 6642-1.htm
(c'est le même avec en plus les parametres de généricité précisés en haut)


Message édité par tris le 29-04-2006 à 00:35:58
n°1356360
Profil sup​primé
Posté le 29-04-2006 à 07:15:26  answer
 

une fonction mot_neutre return tmot dans pmot + elaborate_body(pmot) dans pmot.ads, ça c'est possible !

n°1356364
Profil sup​primé
Posté le 29-04-2006 à 07:42:41  answer
 

du code
 

Code :
  1. package body Pmot is
  2.   Neutre : Tmot
  3.   function Mot_Neutre return TMot is
  4.   begin
  5.      return Neutre;
  6.   end;
  7.  
  8. begin
  9.   Init_Liste(Neutre);
  10.   Insere_Apres(Neutre,'.');
  11. end Pmot;

n°1356406
tris
Posté le 29-04-2006 à 11:05:12  profilanswer
 

qu'est ce que tu entends par "elaborate_body(pmot)" ?
 
et pourquoi la fonction mot_neutre est en 2 fois ? je veux dire  
 
begin
return
end
 
puis de nouveau  
begin
les instructions
end

n°1356414
Profil sup​primé
Posté le 29-04-2006 à 11:31:38  answer
 

Sorry,
 

Code :
  1. package body Pmot is
  2.   Neutre : Tmot
  3.   function Mot_Neutre return TMot is
  4.   begin
  5.      return Neutre;
  6.   end mot_neutre;
  7.  
  8. begin  -- début de la partie executive du corp de paquetage Pmot;
  9.   Init_Liste(Neutre);                --  C'est deux instructions son executer lors de l'elaboration de Pmot
  10.   Insere_Apres(Neutre,'.');     --  
  11. end Pmot; -- fin de la partie executive du corp du paquetage Pmot;


 
pragma elaborate_body  -- incapable de te traduire pragma mais
 

Citation :


elaborate_body [(nom_unité_de_bibliothèque)];
 
Il s'agit d'un pragma d'unité de bibliothèque. Spécifie que le corps de l'unité doit ètre
élaboré immédiatement aprés sa declaration  


 
Le corps de Pmot sera elaboré avant l'alaboration de la specification de Pphrase.
De cette maniere, dans mon exemple, mot_neutre retournera neutre initialisé et contenant 1 element => '.'
je crois.
 

Citation :


Il est quelquefois nécessaire de fournir une information supplémentaire au compilateur. Cette information ne fait pas partie du programme en tant que tel ; C'est plutôt une indication utile. On peut réaliser cela grâce a une construction appelée pragma.

n°1356419
tris
Posté le 29-04-2006 à 11:48:35  profilanswer
 

oula trop compliqué pour moi ça ^^
 
j'ai essayé ça :
 
dans pmot.adb

Code :
  1. function mot_neutre return Tmot is
  2. neutre:tmot;
  3. begin
  4. init_liste(neutre);
  5. insere_apres(neutre,'.');
  6. return Neutre;
  7. end;


 
je l'ai déclarée dans pmot.ads
 
et dans pphrase.ads
 

Code :
  1. private
  2. package PListeMot is new Plistgen (tmot, affiche_mot, saisie_mot,mot_neutre, mots_egaux);


ça compile ... on verra si ça marche  
 
sinon je savais pas qu'on pouvait créer des fonctions sans parametres en entrée

n°1356423
Profil sup​primé
Posté le 29-04-2006 à 11:53:52  answer
 

Marchera pas, neutre n'est visible que pour mot_neutre, a la fin de mot_neutre neutre n'existera plus, sorry.
 
je crois que t'as pas trop de choix,  :heink:  

mood
Publicité
Posté le 29-04-2006 à 11:53:52  profilanswer
 

n°1356426
Profil sup​primé
Posté le 29-04-2006 à 12:01:58  answer
 

Citation :


oula trop compliqué pour moi ça ^^  


 [:bubblelover]  [:aless]  [:kernel-panic]  [:aldiallo]  :hello:  :lol:  :jap:  I :love: Ada

n°1356428
tris
Posté le 29-04-2006 à 12:05:03  profilanswer
 

c'est la fonction que j'apelle pas la variable

n°1356432
Profil sup​primé
Posté le 29-04-2006 à 12:09:30  answer
 

Sorry,

Citation :


Marchera pas, neutre n'est visible que pour mot_neutre, a la fin de mot_neutre neutre n'existera plus, sorry.


 
Si ça marche je t'envoie une bouteille de champagne ! 2 même !
Si ça marche pas mon code est gratis !

n°1356439
tris
Posté le 29-04-2006 à 12:27:37  profilanswer
 

ça marche ^^ mais c autre chose qui marhce pas maintenant...
dans le plistgen la fct insere apres ... mais le programme se lance sans pb !

n°1356619
tris
Posté le 29-04-2006 à 21:03:37  profilanswer
 

bon ça marche presque, la saisie ne s'arrete pas au point. je pense que le mot neutre constitué n'est pas reconnu.

n°1359961
tris
Posté le 04-05-2006 à 19:29:37  profilanswer
 

Quelqu'un a une idée ?

n°1359974
Profil sup​primé
Posté le 04-05-2006 à 19:56:19  answer
 

Bonjour Tris, t'a essayé ma soluce ?  :jap:  
j'espere que oui  :sol:

n°1359979
tris
Posté le 04-05-2006 à 20:05:28  profilanswer
 

Salut !
si tu parles du elaborate....... non sinon le code c'est celui la que j'ai depuis le début.
je n'ai pas appris ce genre de trucs, je n'ai donc pas à l'utiliser.

n°1359987
Profil sup​primé
Posté le 04-05-2006 à 20:10:46  answer
 

Alors, je vais essayer de me casser la tête pour trouver autre chose, merci de ta reponse !
A+

n°1359996
tris
Posté le 04-05-2006 à 20:16:46  profilanswer
 

je précise la saisie de mots fonctionne bien, et s'arrete bien à ' ' (l'espace) , la fonction de saisie générique n'est donc pas en cause

n°1359998
Profil sup​primé
Posté le 04-05-2006 à 20:19:34  answer
 

C'est bien la porté du mot neutre le problème ? n'est-ce pas ? As-tu essayé la même chose sans le preelaborate ?


Message édité par Profil supprimé le 04-05-2006 à 20:46:11
n°1360027
tris
Posté le 04-05-2006 à 21:06:50  profilanswer
 

c'est le repère qui termine une phrase qui doit poser probleme, car la saisie d'une phrase ne s'arrete pas.

n°1360029
Profil sup​primé
Posté le 04-05-2006 à 21:18:22  answer
 

Un '.'
Est-ce que tu peut poster les corps de paquetage et ton main courant, je voudrais tester le programme dans son ensemble
 
Sans le preelaborate, j'ai peur que ma solution soit incomplete, sait-on jamais !
 
A par ça, je trouve pas, à moins de faire tout à fait differement !
 
Peut-etre en creant un autre paquetage Mot_Neutre mais je voudrais les corps de paquetage pour compiler l'ensemble !

n°1360144
tris
Posté le 05-05-2006 à 04:27:32  profilanswer
 

je vais t'envoyer le projet entier par mail ce sera plus simple ^^ ya tellement de fichiers

n°1360625
Profil sup​primé
Posté le 05-05-2006 à 18:01:44  answer
 

:??:  Pas simple, le probleme,
           La solution l'est peut-être d'avantage !
 
up !
 
Edit : Petit erreur d'analise en vue !
 
Edit : Quelle sont tes contrainte de developpement ?


Message édité par Profil supprimé le 05-05-2006 à 18:05:54
n°1360950
tris
Posté le 06-05-2006 à 17:31:22  profilanswer
 

quelle erreur d'analyse ?
les fonctions sont imposées, les parametres de généricité de plisgen aussi. faut juste trouver un moyen d'exprimer un mot - point...
enfin exécute le tu verras où ça coince.
La structure en paquetages est imposée ainsi que les fonctons qu'ils doivent contenir. J'ai presque juste fait les corps des fonctions et rempli les parametres génériques.

n°1360961
Profil sup​primé
Posté le 06-05-2006 à 18:27:00  answer
 

Moi je tourne en rond  [:aganemnon], je trouve pas  [:dawa_neowen]

n°1360964
Profil sup​primé
Posté le 06-05-2006 à 18:33:54  answer
 

T'es sure qu'il n'y a qu'un seul paquetage de liste generique,
 
Il faudrait un paquetage de liste de liste
 
ou alors il faut passer le 'Mot neutre' a P_phrase et implementer Phrase, et non pas faire un simple appel a plistgen
 
Bref, je trouve pas, je fait le truc à ma sauce !  :sol:

n°1360966
Profil sup​primé
Posté le 06-05-2006 à 18:41:10  answer
 

Pour les mot le paquetage ton paquetage plistgen, tel que je le connais, pas de problème !
 
Pour les phrase, tu fais des truc comme, comparer des pointeurs, afficher des pointeurs, saisir des pointeurs est-ce que tu saisis l'embrouille ?


Message édité par Profil supprimé le 06-05-2006 à 18:42:10
n°1360970
Profil sup​primé
Posté le 06-05-2006 à 18:51:19  answer
 

Fait peter le sujet si tu veux, parce que je m'en sort pas !

mood
Publicité
Posté le   profilanswer
 


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

  Packages et liste générique

 

Sujets relatifs
[XSL-T] Affichage d'une liste XML sous forme de tableau HTMLTester la connectivité d'une liste de machines
access - zone de liste à sélection multipleliste deroulante qui affiche le nom et enregistre l'id
Récupérer valeur combobox (liste déroulante)Renvoyer la valeur d'une cellule d'une liste de fichiers?? merci d'ava
récupérer toutes les valeurs d'une listeProblème de suppression d'un element d'une liste
remplir une liste avec une autremsgbox sous access avec liste déroulante
Plus de sujets relatifs à : Packages et liste générique


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