IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Problème d'accès à une structure.


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 11
    Points
    11
    Par défaut Problème d'accès à une structure.
    Hello

    J'ai un soucis au niveau de l'accès à la structure Pouet et à la modification de celle ci.

    A la ligne "partie->princ = deck_new();" dans la fonction deal_main(), Code Blocks me renvoie: C:\*************\main.c|13|error: dereferencing pointer to incomplete type. Il me le dit aussi a chauqe fois que j'ecris pouet->

    Si je mets pouet. ,il me retourne C:\**********\main.c|23|error: request for member `hands' in something not a structure or union|

    Comment puis-je modifier la structure?

    Merci!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    typedef struct
    {
        Deck *table;
        Deck *princ;
        Deck **hands;
        int nhands;
    } Pouet;
     
    struct Pouet *deal_main (struct Pouet *partie)
    {
        gint rank, suit;
        int i,j,k;
        Card *c;
     
        partie->princ = deck_new();
    }
     
    int main (int argc, char *argv[])
    {
        Pouet *partie;
        gint rank, suit;
        int i,j,k;
     
        partie = malloc(sizeof(struct Pouet));
        partie.nhands = 9;
     
        deal_main(&partie);
     
        for (i=0;i<partie.nhands;i++) deck_print(partie->hands[i]);
     
            return 0;
    }

  2. #2
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef struct Pouet
    {
        Deck *table;
        Deck *princ;
        Deck **hands;
        int nhands;
    } Pouet;
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  3. #3
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    de plus, pour accéder aux membre de ta structure via un pointeur, utilises '->' au lieu de '.' comme tu l'as fait à 2 endroits
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Merci mais ça ne fonctionne toujours pas avec la nouvelle déclaration de structure.

    Code Blokcs me signale la même erreur.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    normal ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       (*partie).nhands = 9;
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    je dois le faire a chaque fois que j'utilise partie?

    de toute facon, ca ne marche pas. toujours l'histoire du dereferencing pointer to incomplete type

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par a_ferre Voir le message
    A la ligne "partie->princ = deck_new();" dans la fonction deal_main(), Code Blocks me renvoie: C:\*************\main.c|13|error: dereferencing
    Déjà, ça ne compile pas, car le type 'Deck' n'est pas défini.
    Pas de Wi-Fi à la maison : CPL

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    sisi il est défini en tant que GList

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par a_ferre Voir le message
    sisi il est défini en tant que GList
    Prouve le (autrement, dit, poste du code compilable, on ne va pas passer la journée à jouer aux devinettes...)
    Pas de Wi-Fi à la maison : CPL

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    #include "deck.h"
    #include "poker.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    typedef GList Deck;
    typedef enum { HEART, SPADE, DIAMOND, CLUB } ESuit;
    typedef enum { SUIT, RANK, RANK_ACE_LOW } ESortOrder;
    typedef struct
    {
        ESuit suit;
        gint rank;
        int coul;
    } Card;
     
    typedef struct
    {
     
        Deck *table;
        Deck *princ;
        Deck **hands;
        int nhands;
    } Pouet;
     
    Pouet deal_main (Pouet partie)
    {
        gint rank, suit;
        int i,j,k;
        Card *c;
     
        partie->princ = deck_new();
     
        k=0;
        for (i=0; i<partie->nhands; i++)
        {
            printf ("main %d\n", i);
            for (j=0; j<2; j++)
            {
            partie->hands[i] = deck_new();
            c = deck_get_nth (partie.princ, k);
            (*partie)->hands[i] = deck_add_card(partie.hands[i], c);
            deck_print(partie.hands[i]);
            k++;
            }
        }
     
        return partie;
    }
     
    Deck *deal_flop (Deck *table, Deck *princ)
    {
        gint rank, suit;
        int i,j,k;
        Card *c;
     
        for (i=0; i<2; i++)
        {
            princ=deck_pop_card(princ, &c);
            table = deck_add_card(table, c);
        }
        return table;
    }
     
    Deck *deal_turn (Deck *table, Deck *princ)
    {
        gint rank, suit;
        int i,j,k;
        Card *c;
     
        princ = deck_pop_card(princ, &c);
        table = deck_add_card(table, c);
     
        return table;
    }
     
    Deck *deal_river (Deck *table, Deck *princ)
    {
        gint rank, suit;
        int i,j,k;
        Card *c;
     
        princ = deck_pop_card(princ, &c);
        table = deck_add_card(table, c);
     
        return table;
    }
     
    struct Pouet *round (struct Pouet *partie)
    {
        int i;
        Card *c;
     
        partie->princ = deck_new();
        partie->princ = deck_fill(partie->princ);
        partie->princ = deck_shuffle(partie->princ);
     
        partie.table = deck_new();
     
        for (i=0; i<partie.nhands; i++)
        {
            hands[nhands] = deck_new();
            deal_main(partie);
            printf ("main %d\n",i);
            deck_print(hands[nhands]);
        }
        for (i=0; i<(nhands*2); i++) princ = deck_pop_card(princ, &c);
        deal_flop(table, princ);
        for (i=0; i<3; i++) princ = deck_pop_card(princ, &c);
        deal_turn(table, princ);
        princ = deck_pop_card(princ, &c);
        deal_river(table, princ);
        princ = deck_pop_card(princ, &c);
    }
     
    int stat(struct Deal *partie)
    {
        int prof=1000;
        int tablo_gagn[nhands][prof];
        for (prof=0; prof<1000; prof++)
        {
            if (deck_count(table)==0)
            {
                deal_flop();
                deal_turn();
                deal_river();
                hand_compare();
                tablo_gagn[][]=1;
            }
        }
    }
     
    int main (int argc, char *argv[])
    {
        Pouet *partie;
        gint rank, suit;
        int i,j,k;
     
        partie->nhands = 9;
     
        partie->princ = deck_new();
        partie->princ = deck_fill(partie->princ);
        partie->princ = deck_shuffle(partie->princ);
     
        /*
         * The following code was added by Glade to create one of each component
         * (except popup menus), just so that you see something after building
         * the project. Delete any components that you don't want shown initially.
         */
        /*deroul(8);*/
     
        deal_main(&partie);
     
        for (i=0;i<partie.nhands;i++) deck_print(partie->hands[i]);
     
            return 0;
    }
    c'était juste un peu long a copier ^^

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par a_ferre Voir le message
    c'était juste un peu long a copier ^^
    Toujours aussi incomplet... on est pas aidé...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : D:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:1:18: deck.h: No such file or directory
    main.c:2:19: poker.h: No such file or directory
    main.c:7: error: syntax error before "Deck"
    main.c:7: warning: type defaults to `int' in declaration of `Deck'
    main.c:7: warning: data definition has no type or storage class
    main.c:13: error: syntax error before "gint"
    main.c:13: warning: no semicolon at end of struct or union
    main.c:15: error: syntax error before '}' token
    main.c:15: warning: type defaults to `int' in declaration of `Card'
    main.c:15: warning: data definition has no type or storage class
    main.c:20: error: syntax error before "Deck"
    main.c:20: warning: no semicolon at end of struct or union
    main.c:21: warning: type defaults to `int' in declaration of `princ'
    main.c:21: warning: data definition has no type or storage class
    main.c:22: error: syntax error before '*' token
    main.c:22: warning: type defaults to `int' in declaration of `hands'
    main.c:22: warning: data definition has no type or storage class
    main.c:24: error: syntax error before '}' token
    main.c:24: warning: type defaults to `int' in declaration of `Pouet'
    main.c:24: warning: data definition has no type or storage class
    main.c:26: error: syntax error before "deal_main"
    main.c:26: error: syntax error before "partie"
    main.c:27: warning: return type defaults to `int'
    main.c:27: warning: function declaration isn't a prototype
    main.c: In function `deal_main':
    main.c:28: error: `gint' undeclared (first use in this function)
    main.c:28: error: (Each undeclared identifier is reported only once
    main.c:28: error: for each function it appears in.)
    main.c:28: error: syntax error before "rank"
    main.c:30: error: `c' undeclared (first use in this function)
    main.c:32: error: `partie' undeclared (first use in this function)
    main.c:32: warning: implicit declaration of function `deck_new'
    main.c:41: warning: implicit declaration of function `deck_get_nth'
    main.c:42: warning: implicit declaration of function `deck_add_card'
    main.c:43: warning: implicit declaration of function `deck_print'
    main.c: At top level:
    main.c:51: error: syntax error before '*' token
    main.c:51: error: syntax error before '*' token
    main.c:52: warning: return type defaults to `int'
    main.c:52: warning: function declaration isn't a prototype
    main.c: In function `deal_flop':
    main.c:53: error: `gint' undeclared (first use in this function)
    main.c:53: error: syntax error before "rank"
    main.c:55: error: `c' undeclared (first use in this function)
    main.c:59: warning: implicit declaration of function `deck_pop_card'
    main.c:59: warning: assignment makes pointer from integer without a cast
    main.c:60: error: `table' undeclared (first use in this function)
    main.c:54: warning: unused variable `j'
    main.c:54: warning: unused variable `k'
    main.c: At top level:
    main.c:65: error: syntax error before '*' token
    main.c:65: error: syntax error before '*' token
    main.c:66: warning: return type defaults to `int'
    main.c:66: warning: function declaration isn't a prototype
    main.c: In function `deal_turn':
    main.c:67: error: `gint' undeclared (first use in this function)
    main.c:67: error: syntax error before "rank"
    main.c:69: error: `c' undeclared (first use in this function)
    main.c:71: warning: assignment makes pointer from integer without a cast
    main.c:72: error: `table' undeclared (first use in this function)
    main.c:68: warning: unused variable `i'
    main.c:68: warning: unused variable `j'
    main.c:68: warning: unused variable `k'
    main.c: At top level:
    main.c:77: error: syntax error before '*' token
    main.c:77: error: syntax error before '*' token
    main.c:78: warning: return type defaults to `int'
    main.c:78: warning: function declaration isn't a prototype
    main.c: In function `deal_river':
    main.c:79: error: `gint' undeclared (first use in this function)
    main.c:79: error: syntax error before "rank"
    main.c:81: error: `c' undeclared (first use in this function)
    main.c:83: warning: assignment makes pointer from integer without a cast
    main.c:84: error: `table' undeclared (first use in this function)
    main.c:80: warning: unused variable `i'
    main.c:80: warning: unused variable `j'
    main.c:80: warning: unused variable `k'
    main.c: At top level:
    main.c:90: warning: conflicting types for built-in function 'round'
    main.c: In function `round':
    main.c:92: error: `c' undeclared (first use in this function)
    main.c:94: error: dereferencing pointer to incomplete type
    main.c:95: error: dereferencing pointer to incomplete type
    main.c:95: warning: implicit declaration of function `deck_fill'
    main.c:95: error: dereferencing pointer to incomplete type
    main.c:96: error: dereferencing pointer to incomplete type
    main.c:96: warning: implicit declaration of function `deck_shuffle'
    main.c:96: error: dereferencing pointer to incomplete type
    main.c:98: error: request for member `table' in something not a structure or union
    main.c:100: error: request for member `nhands' in something not a structure or union
    main.c:102: warning: assignment makes pointer from integer without a cast
    main.c:107: warning: assignment makes pointer from integer without a cast
    main.c:108: error: `table' undeclared (first use in this function)
    main.c:109: warning: assignment makes pointer from integer without a cast
    main.c:111: warning: assignment makes pointer from integer without a cast
    main.c:113: warning: assignment makes pointer from integer without a cast
    main.c: At top level:
    main.c:116: warning: "struct Deal" declared inside parameter list
    main.c:116: warning: its scope is only this definition or declaration, which is probably not what you want
    main.c: In function `stat':
    main.c:122: warning: implicit declaration of function `deck_count'
    main.c:122: error: `table' undeclared (first use in this function)
    main.c:127: warning: implicit declaration of function `hand_compare'
    main.c:128: error: syntax error before ']' token
    main.c: At top level:
    main.c:116: warning: unused parameter 'partie'
    main.c: In function `main':
    main.c:135: error: `partie' undeclared (first use in this function)
    main.c:136: error: `gint' undeclared (first use in this function)
    main.c:136: error: syntax error before "rank"
    main.c:137: warning: unused variable `j'
    main.c:137: warning: unused variable `k'
    main.c: At top level:
    main.c:133: warning: unused parameter 'argc'
    main.c:133: warning: unused parameter 'argv'
    Process terminated with status 1 (0 minutes, 1 seconds)
    48 errors, 53 warnings
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Pouet deal_main (Pouet partie)
    {
    ....
        partie->princ = deck_new();
    ....
        for (i=0; i<partie->nhands; i++)
        {
    ....
            partie->hands[i] = deck_new();
            c = deck_get_nth (partie.princ, k);
            (*partie)->hands[i] = deck_add_card(partie.hands[i], c);
            deck_print(partie.hands[i]);
    ....
        }
     
        return partie;
    }
    partie est une structure Pouet. Pour accéder aux champs, utiliser l'opérateur . (point) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Pouet deal_main (Pouet partie)
    {
    ....
        partie.princ = deck_new();
    ....
        for (i=0; i<partie.nhands; i++)
        {
    ....
            partie.hands[i] = deck_new();
            c = deck_get_nth (partie.princ, k);
            partie.hands[i] = deck_add_card(partie.hands[i], c);
            deck_print(partie.hands[i]);
    ....
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct Pouet *round (struct Pouet *partie)
    {
    ...
        partie.table = deck_new();
        for (i=0; i<partie.nhands; i++)
        hands[nhands] = deck_new();
    ...
    - partie est ici l'adresse d'une structure. Pour accéder aux champs, utiliser l'opérateur -> .
    - hands et nhands ne sont pas définis. Si ce sont les membres d'un Pouet, il faut le spécifier.
    - Pouet est défini par un typedef struct : Le nom du type est Pouet, pas struct Pouet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Pouet *round (Pouet *partie)
    {
    ...
        partie->table = deck_new();
        for (i=0; i<partie->nhands; i++)
        partie->hands[partie->nhands] = deck_new();
    ...
    Et de même pour tout le code.
    Relis-le entièrement et attentivement et opère ces corrections.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    ok merci je tente ça

Discussions similaires

  1. Problème d'accès à une base paradox.
    Par Fouflarage dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/03/2006, 23h57
  2. problème droit accès à une table
    Par lio33 dans le forum Administration
    Réponses: 3
    Dernier message: 04/10/2005, 19h35
  3. Problème d'accès à une BD via ASP
    Par beegees dans le forum ASP
    Réponses: 2
    Dernier message: 08/06/2005, 12h38
  4. [ADO] [MSACCESS] Problème d'accès à une table nommée OF
    Par FredRaid dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/02/2005, 17h22
  5. Problème d'accès à une DB
    Par Mvu dans le forum ASP
    Réponses: 4
    Dernier message: 04/01/2005, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo