Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > Ada
Ada Forum d'entraide sur la programmation en langage Ada
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/05/2011, 09h54   #1
Invité de passage
 
Inscription : juin 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 17
Points : 4
Points : 4
Par défaut Package générique utilisation

Bonjour, je dispose de 2 packages génériques que j'utilises 2 fois chacun (une fois pour les integers et une fois pour les strings). J'ai également un fichier "main" qui se charge d'instancier le package selectionné par l'utilisateur.
- package1 avec integer
- ou package1 avec string
- ou package2 avec integer
- ou package2 avec string

Le but est d'utiliser le même code du main pour les 4 packages.

Malheureusement je ne trouve pas comment faire cela proprement. Pour le moment j'ai mis la liste des packages en dur que je commente. Il n'est pas possible de faire des pseudo if dans le begin ou de faire le new package dans le begin ? Sinon peut etre en passant la package en paramètre de la fonction ?

Code :
1
2
3
4
5
6
7
8
9
procedure main is
         package aB is new package1(integer, false, afficheInteger, true);
        --package aB is new package1(Unbounded_String, true, afficheUnbounded, true);
        --package aB is new package2(1,integer, false, afficheInteger, true);
        --package aB is new package2(1, Unbounded_String, true, afficheUnbounded, true);
begin
        aB.init();
        .....
Merci d'avance
Flatbeat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 10h59   #2
Invité de passage
 
Inscription : juin 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 17
Points : 4
Points : 4
J'ai essayé de passer le paquetage en paramètre, ce qui résoudrait mon problème, mais je ne sais pas si c'est possible. J'ai essayé le code suivant mais ça fonctionne pas.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
procedure init_paquetage1_int is
    package aB is new packA(integer, false, afficheInteger, true);
begin
    main(aB);
end init_paquetage1_int; 

procedure main(aB : packA) is
begin
    aB.init();
    ....
end main;
Flatbeat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 13h09   #3
Membre confirmé
 
Inscription : juin 2006
Messages : 649
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : juin 2006
Messages : 649
Points : 276
Points : 276
Bonjour,

Après le begin, tu peut faire une condition à base de if ou de case, et placer un "declare ...instance du paquetage... begin ...code... end.
jovalise est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h47.


 
 
 
 
Partenaires

Hébergement Web