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 :

souci de transtypage


Sujet :

C++

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Par défaut
    ok ok, mais comment je fais pour avoir la valeur qui est pointée et non pas son adresse mémoire?
    Frappez pas trop fort je commence à tout mélanger...
    Quand j'aurai compris le truc et que mon proto sera ok je pense que ça ira déjà mieux (j'espère...)

  2. #22
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Ben, comme pour tout pointeur, quand tu veux accéder à la valeur et non à l'adresse à laquelle elle se trouve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /* transformer un entier en un pointeur sur entier */
    int entier;
    int *ptrent;
    ptrent=&entier;
    /* récupérer un entier au départ d'un pointeur sur entier
    int recup;
    recup=*ptrent;
    /* particularité pour les tableaux */
    int tab[10];
    ptrent=tab;
    recup=tab[3];
    [EDIT]Ceci dit, ce genre de question nous inciterait presque à te conseiller de réviser ou de relire très sérieusement ton cours ou ton livre à la partie "pointeurs et tableaux"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Par défaut
    aaaaahhhhhhh
    Ce que j'avais fait été donc bon... Mes souvenirs sont pas encore trop pourri...
    Arf Pas de bol, maintenant, j'ai Firefox qui explose encore quand j'arrive au niveau de mon transtypage... De quoi se pendre...
    Je vais aller bouffer, ça ira pitète mieux après....

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Par défaut
    J'ai trop l'impression de toucher le fond là, y a pas plus pire que moi...
    J'ai fait ça :
    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
    NS_IMETHODIMP CSpecialThing::Add(PRInt32 a, PRInt32 b, PRInt32 *_retval)
    {
    	PRInt32 test;
    	typedef char* (_stdcall *ProcDllPtr)(char* monString);
    	char* reponseDLL;
    	HMODULE hinstDLL=LoadLibraryA((LPCSTR)"C:\\DLMDLL.dll");
    	if (hinstDLL) {
    		ProcDllPtr ProcExportDll = (ProcDllPtr) GetProcAddress(hinstDLL, "Ajouter_article");
    		reponseDLL=ProcExportDll((char*)("affiche moi"));
    	} else {
    		//traitement erreur
    	}
    	FreeLibrary((HINSTANCE)hinstDLL);
     
    	PRInt32  * testa = reinterpret_cast<PRInt32 *>(reponseDLL);
    	test=*testa;
     
    	*_retval = test;
    	return NS_OK;
    }
    ça compile nickel mais mon Firefox plante juste au niveau du transtypage... Je sent que j'ai encore du faire une connerie...

  5. #25
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par simoryl Voir le message
    J'ai trop l'impression de toucher le fond là, y a pas plus pire que moi...
    J'ai fait ça :
    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
    NS_IMETHODIMP CSpecialThing::Add(PRInt32 a, PRInt32 b, PRInt32 *_retval)
    {
    	PRInt32 test;
    	typedef char* (_stdcall *ProcDllPtr)(char* monString);
    	char* reponseDLL;
    	HMODULE hinstDLL=LoadLibraryA((LPCSTR)"C:\\DLMDLL.dll");
    	if (hinstDLL) {
    		ProcDllPtr ProcExportDll = (ProcDllPtr) GetProcAddress(hinstDLL, "Ajouter_article");
    		reponseDLL=ProcExportDll((char*)("affiche moi"));
    	} else {
    		//traitement erreur
    	}
    	FreeLibrary((HINSTANCE)hinstDLL);
    
    	PRInt32  * testa = reinterpret_cast<PRInt32 *>(reponseDLL);
    	test=*testa;
    
    	*_retval = test;
    	return NS_OK;
    }
    ça compile nickel mais mon Firefox plante juste au niveau du transtypage... Je sent que j'ai encore du faire une connerie...
    je pense que tu libère ta dll trop tôt. il y as de forte chance que lorsque tu la libère, la memoire pointer par reponseDLL soit libéré, d'ou ton crash.
    essaie cela

    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
    NS_IMETHODIMP CSpecialThing::Add(PRInt32 a, PRInt32 b, PRInt32 *_retval)
    {
    	PRInt32 test;
    	typedef char* (_stdcall *ProcDllPtr)(char* monString);
    	char* reponseDLL;
    	HMODULE hinstDLL=LoadLibraryA((LPCSTR)"C:\\DLMDLL.dll");
    	if (hinstDLL) {
    		ProcDllPtr ProcExportDll = (ProcDllPtr) GetProcAddress(hinstDLL, "Ajouter_article");
    		reponseDLL=ProcExportDll((char*)("affiche moi"));
    	} else {
    		//traitement erreur
    	}
    	
    
    	PRInt32  * testa = reinterpret_cast<PRInt32 *>(reponseDLL);
    	test=*testa;
    
    	*_retval = test;
          FreeLibrary((HINSTANCE)hinstDLL);
    	return NS_OK;
    }
    Le mieux serait un class qui interface ta dll

  6. #26
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Déjà, on pourrait commencer par te suggérer d'adopter une politique d'indentation rigoureuse... N'oublie jamais qu'un code est beaucoup plus souvent lu qu'il n'est écrit, et que, s'il te semble limpide aujourd'hui, il peut te sembler bien plus nébuleux dans une semaine ou dans trois mois

    Ainsi, et sans avoir apporté la moindre correction, ton code serait bien plus lisible sous un forme proche de
    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
    NS_IMETHODIMP CSpecialThing::Add(PRInt32 a, PRInt32 b, PRInt32 *_retval)
    {
        PRInt32 test;
        typedef char* (_stdcall *ProcDllPtr)(char* monString);
        char* reponseDLL;
        HMODULE hinstDLL=LoadLibraryA((LPCSTR)"C:\\DLMDLL.dll");
        if (hinstDLL) 
        {
            ProcDllPtr ProcExportDll = (ProcDllPtr) GetProcAddress(hinstDLL,
                         "Ajouter_article");
            reponseDLL=ProcExportDll((char*)("affiche moi"));
        }
        else 
        {
    		//traitement erreur
        }
        FreeLibrary((HINSTANCE)hinstDLL);
     
        PRInt32  * testa = reinterpret_cast<PRInt32 *>(reponseDLL);
        test=*testa;
     
        *_retval = test;
        return NS_OK;
    }
    (préfère l'indentation sous forme d'espaces (4, c'est pas mal ) à celle sous forme de tabulation, et veille autant que possible à respecter une regle simple: une ligne= une instruction )

    Maintenant, les remarques qui font mal:
    Méfie toi des typedef à l'intérieur des fonctions... ils ne sont en effet disponible qu'à l'intérieur de cette fonction, et on peut penser que, si tu les trouve intéressants dans une fonction, tu leur trouvera sans doute une utilité quelconque ailleurs

    Tu utilises beaucoup trop le cast "C style" à mon goût: les instructions
    • LoadLibraryA((LPCSTR)"C:\\DLMDLL.dll");
    • (ProcDllPtr) GetProcAddress(hinstDLL, "Ajouter_article");
    • ProcExportDll((char*)("affiche moi"));
    • FreeLibrary((HINSTANCE)hinstDLL);

    sont autant d'instructions dans lesquelles tu utilise un cast "C style" alors que tu pourrais t'en passer assez facilement

    Sauf erreur, LPCSTR n'est qu'un alias de const char*, ce qui te permettrait de travailler sous une forme plus générique de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    std::string str="c:\\DLMDLL.dll"); /* pourrait très bien être un argument ;) */
    LoadLibraryA(str.c_str());
    La même remarque peut s'appliquer à ProcExportDll((char*)("affiche moi"));

    Pour les deux autres (ProcDllPtr et HINSTANCE), tu devrais peut être préférer, au pire le reinterpret_cast, au mieux (si il fonctionne) le static_cast...

    Cette suggestion a pour seul but de te permettre de t'y retrouver plus facilement dans le code

    En effet, en effectuant une recherche sur "(HINSTANCE)", tu peux tomber, au choix,
    • sur une fonction qui reçoit HINSTANCE en paramètre
    • sur un transtypage de quelque chose en HINSTANCE

    Par contre, si tu travailles à coup de static_/reinterpret_/const_/dynamic_ cast, et en utilisant au besoin les expressions régulières, tu sera certain, lors d'une recherche sur "_cast<HINSTANCE>" ou sur "_cast<un type donné> (HINSTANCE)" que les seuls résultats obtenus seront... des transtypages de quelque chose en HINSTANCE (ou de HINSTANCE en autre chose)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #27
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Par défaut
    hèhè, oui en effet, mon indentation est partie en live... A force de commenter, décommenter, ajouter, supprimer... Faut que je remette ça au propre

    J'ai commencé le vc++ il y a à peine 1 semaine, je suis pas encore à fond dedans, tes éclaircissements sur les methodes de transtypage sont très intéréssantes et plus digeste que la plupart des tutaux que j'ai lu (c'est quand on a les pieds dedans qu'on comprend mieux généralement).

    Sinon, en effet, je libérais ma dll trop tôt, maintenant ça crash plus mais je récupère toujours un chiffre qui ne correspond pas à celui envoyé par ma dll qui est 666 (j'aurai pas du choisir celui-là mdr). Je pense que je récupère encore un pointer au lieu de la valeur...
    Reste plus qu'à me sacrer roi des boulets si ça continue! Mais ce qui me rassure c'est que je comprend petit à petit et que je commence à imprimer le vc++ dans mon cerveau
    Faut pas le dire mais je suis blond lol...

  8. #28
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Ceci dit, ne confond pas...:

    VC++ est un outil ( pour être précis: un EDI (Environnement de Développement Intégré) voir un RAD (Rapid Application Development) pour les versions "pro") et est l'abréviation de Visual C++ (Visual faisant référence à la suite d'outils Visual Studio de microsoft)

    Le langage, c'est C++, et il n'y a pas de V dedans
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  9. #29
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Par défaut
    c'est un abus de langage de ma part.
    Avec Delphi, j'ai pas ce souci là lol... Et j'ai pas non plus de souci de pointeur comme en ce moment avec ce fichu PRInt32 à la
    Je deteste rester coincer sur 2 lignes de code pendant des jours... ça me donne l'impression d'être plus bête que je ne le suis déjà mdr

  10. #30
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    juste pour info, tu recupere quoi comme valeur au lieu de 666 ??

  11. #31
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Par défaut
    Je récupère :3552822. C'est fun, c'est toujours le même contrairement à une époque... Je parie que je récupère le bon chiffre mais pas au bon format...

  12. #32
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    En hexa, ça donne 0x363636.
    Ce qui en little-endian (notamment sur un processeur x86) donne les octets:
    Ce qui équivaut à :
    ---> Donc, il est possible que tu aies transformé ton 666 en chaîne de caractères...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #33
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    En hexa, ça donne 0x363636.
    Ce qui en little-endian (notamment sur un processeur x86) donne les octets:
    Ce qui équivaut à :
    ---> Donc, il est possible que tu aies transformé ton 666 en chaîne de caractères...
    comme quoi ma question n'était pas si bête.
    Mais je pensais plustôt à un problème endian ou de décalage

  14. #34
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Réessaie avec 42, on verra bien si tu obtiens 0x**003234...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #35
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Par défaut
    en effet si je remplace mon 666 par 42 j'obtient bien 3234
    J'ai l'impression que chaque problème résolu en créé un autre...
    Bon, il me reste plus qu'à voir comment transformer mon hexa en decimal

  16. #36
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    J'ai pas tout suivi, mais là tu récupères de ta fonction un char* (donc "666") et tu voudrais récupérer l'entier 666 ? C'est ça ?

    Si oui, alors pourquoi être parti sur un reinterpret_cast ? Ce qu'il te faut c'est une conversion chaîne --> entier, et c'est très bien expliqué dans la FAQ.

  17. #37
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Réessaie avec 42, on verra bien si tu obtiens 0x**003234...
    ou
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    std::string reponseDLL=ProcExportDll((char*)("affiche moi"));
    si c'est bien ça, reponseDLL aurai ton nombre sous forme de string.

  18. #38
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Par défaut
    YAHOOOOOOOOOOO!!!!!!!!!!!!!!!



    ça marche!!!!!



    C'est la fête, Merci à tous!!!!

    Vous êtes des

    Pour ceux que ça intérésse, voici mon code (pas très beau mais qui marche!) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    std::istringstream iss(reponseDLL);
    int nombre;
    iss >> nombre;
    test=nombre;
    Comme d'hab', c'est un truc à la c... sur lequel on passe des heures...
    Pas grave, ça MARCHE!!!!!!



    MERCI, 1000 MERCI


  19. #39
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par simoryl Voir le message
    c'est un abus de langage de ma part.
    Avec Delphi, j'ai pas ce souci là lol... Et j'ai pas non plus de souci de pointeur comme en ce moment avec ce fichu PRInt32 à la
    Si ce que tu récupère est bien une string, je ne voit pas comment cela pouvait marcher avec delphi

  20. #40
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Par défaut
    c'était par rapport à la remarque c++ et vc++, pour Delphi le langage c'est Delphi et l'IDE c'est Delphi aussi lol

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [langage] ptit souci de syntaxe
    Par marouanitos dans le forum Langage
    Réponses: 2
    Dernier message: 26/09/2003, 10h28
  2. [File et Directory ListBox] Soucis de filtre
    Par Mercilius dans le forum Composants VCL
    Réponses: 8
    Dernier message: 04/04/2003, 16h17
  3. Réponses: 4
    Dernier message: 16/02/2003, 12h16
  4. Réponses: 2
    Dernier message: 03/10/2002, 17h24
  5. [transtypage]PChar et WideString
    Par rbag dans le forum Bases de données
    Réponses: 2
    Dernier message: 05/09/2002, 20h12

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