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

Qt Discussion :

Ouvrir un fichier texte


Sujet :

Qt

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Points : 52
    Points
    52
    Par défaut Ouvrir un fichier texte
    Bonsoir ,

    Je suis actuellement entrain d'essayer de coder un updater pour mon programme et j'aurais voulu faire un fichier texte qui se créer automatiquement au fur et à mesure que l'on avance dans le programme.

    Donc je pensais déclaré mon fichier texte dans le constructeur et ensuite de rajouter une petite ligne à chaque fois que je veux rajouter une infos dans le fichier texte du rapport.

    Mais déjà la je sais pas comment faire pour éviter de recopier toujours le même code...

    Ensuite je voudrais savoir si c'est possible de lancer toujours avec Qt le fichier texte avec le bloc note ou autre programme par défaut de la machine ?

    Merci et bonne soirée !

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 064
    Points
    219 064
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Il semblerait que vous voulez faire, ce que l'on appelle couramment: un log.

    Dans le principe général, et pour une facilité d'utilisation, nous allons faire une classe qui utilise le design pattern: Singleton

    Cette classe ( et son instance ) pourra être accessible de n'importe quel partie du programme.
    Cette classe, dans le constructeur ( voir les particularités du Singleton ), devra ouvrir un QFile ( c'est la classe qui gère les fichiers ) et puis un QTextStream ( pour plus de simplicité ). Dans le destructeur, on ferme le fichier.
    Lors des appel cela va beaucoup ressembler à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Log::getInstance().getFile() << "The logger is here" << std::endl;
    Bien sur, il faudra appeler ( construire ) le singleton au debut du programme ( pas trop obligatoire, mais bon pour une bonne gestion c'est bien ), et le détruire à la fin du programme ( ça c'est super important )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Et pour ouvrir un fichier avec l'application par défaut de l'OS, utilise cette fonction : http://qt.developpez.com/doc/latest/...s.html#openurl

    Tu peux ouvrir un chemin local (fichier ou dossier) aussi bien qu'un chemin web (qui s'ouvrira avec le navigateur).

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Points : 52
    Points
    52
    Par défaut
    Je vais regarder du côté de l'instance j'ai jamais essayé d'en faire une...

    Par contre pour ouvrir le fichier log.txt qui sera créer avec l'éditeur de texte par défaut donc soit notepad, ou autre sur linux etc j'ai vraiment pas compris comment tu comptais pouvoir le faire avec openUrl ?

    Merci pour vos deux réponses !

  5. #5
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    La doc me parait pourtant très explicite tu as juste à appeler la fonction avec le chemin de ton fichier et il sera ouvert par l'application par défaut (selon son extension donc). Si ton fichier est dans le même répertoire que ton exécutable, tu dois pouvoir mettre uniquement son nom.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Ouvre le fichier en dehors de ton programme
    if(!QDesktopServices::openUrl(QUrl("log.txt")))
        cout << "Erreur d'ouverture du fichier" << endl;
    Cela dit il est peut être plus prudent de mettre le chemin complet du fichier, car je crois que si on lance ton programme par un raccourci, il cherchera le fichier à un autre endroit.

    Pour faire ça, tu peux :
    1) récupérer le chemin du dossier qui contient ton exécutable
    2) ajouter le nom du fichier log à ce chemin
    3) vérifier que le fichier existe, sinon le créer
    4) l'ouvrir dans un éditeur de texte

    Quelques liens :
    http://qt.developpez.com/doc/latest/...icationdirpath
    http://qt.developpez.com/doc/latest/qfile.html (http://qt.developpez.com/doc/latest/qfile.html#exists)

  6. #6
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Salut,

    en gros, tu veux ajouter une ligne à un fichier texte a chaque fois que tu franchis une étape dans ton code. C'est bien ça, n'est ce pas?
    Peux tu préciser une chose importante :
    Ton fichier doit il etre completé à chaque nouveau lancement du programme ou bien son contenu doit il être effacé à chaque nouveau lancement du programme?
    Si le fichier ne doit pas être effacé, il faudra penser à le lire au début de ton programme afin de pouvoir le completer.

    A bientôt, je te répondrai dès que tu auras éclairé ce point important.
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Points : 52
    Points
    52
    Par défaut
    Je vais tester tout de suite pour le bloc note

    katanaenmousse, oui voilà je compte faire à chaque fasse importante du programme par exemple les fichiers télécharger, le dossier temporaire, fichiers supprimer etc...

    Mais je pense que le fichier rapport.txt sera crée et que le fichier sera disponible jusqu'à la prochaine création d'un nouveau fichier rapport.txt

    Donc à la première ligne que j'écris je vais supprimer le fichier déjà existant s'il existe et je crée mon nouveau fichier et ainsi de suite...

    Comme ça j'ai toujours qu'un seul fichier rapport.txt et qui est dispo pendant quelque temps si besoin et.

    Après je sais pas mais si je le rempli a chaque fois à la suite à la fin le fichier pourrais être énorme...
    Si je crée à chaque fois un nouveau fichier j'aurais plein de fichier rapport et c'est pas forcement utilise donc je pense que c'est la meilleur solution de le supprimer à chaque fois que je créer un fichier log.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Points : 248
    Points
    248
    Par défaut
    Sinon tu peux utiliser une bibliothèque de log genre log4cxx qui permet de bien gérer les logs (sa doit gérer la taille des fichers il me semble). Par contre si tu est sous Windows bon courage pour la compiler.

    ps : vu que tu utilise Qt sache qu'il existe la lib Qxt qui "étend" Qt et contient un gestionnaire de log simpathique et assez simple d'utilisation (et pas trop dure a compiler en plus)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Points : 52
    Points
    52
    Par défaut
    Je ne pense pas que ce soit vraiment utile de tout recompiler pour faire juste un mini log...

    Je pensais juste mettre une ligne à chaque fois que je fait une action précise dans le fichier de texte le seul truc qui l'embêté c'est le fait de toujours ouvrir et fermer le fichier texte je voulais l'ouvrir dans le constructeur et mettre une ligne à chaque fois ou je veux pour rajouter dans mon fichier texte.

    J'ai regardé pour faire un pattern:Singleton, mais je ne trouve vraiment pas d'exemple ou autre dessus du coup je mets plus de temps que prévu...

    Et pour le fichier texte qui s'ouvre c'est bon ça marche correctement merci beaucoup !

  10. #10
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Salut a tous,
    Bon je te propose une reflexion :
    1- tu veux un fichier txt qui puisse être implémenté à chaque fois que ton code le prévoit par une seule ligne : Il te faut donc creer une fonction on l'appelera FonctionAjouterLigne. A chaque fois que tu voudras ajouter une ligne tu taperas donc FonctionAjouterLigne("chaine de caracteres à ajouter"). L'ideal étant de stocker cette chaine de caractere dans une QList. Cela te permettra de séparer chaque ligne entre elles.
    2- tu veux que le fichier soit vidé à chaque lancement de programme. Pour cela, rien de plus simple il suffit de réécrire par dessus ce qui existe déjà, exactement comme si le fichier txt était vide.
    Je te propose le code suivant ça sera plus parlant :
    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
     
    // a placer dans ton fichier .cpp
    QList<QString> ListeLignes; //Défini la variable ListeLignes qui contiendra la liste des lignes ecrites dans le fichier txt
     
    void MaFenetre::FonctionAjouterLigne(QList<QString> MonArgument)
    {
        // Créer un objet QFile qui contient le fichier "MonFichier.txt"
        QFile File("MonFichier.txt");
        // Ouvrir le fichier en ecriture seule
        File.open(QIODevice::WriteOnly | QIODevice::Text);
        // Création d'un objet QTextStream relatif à notre fichier (File)
        QTextStream MonFlux(&File);
        // On choisit le codec relatif au jeu de caractères voulu, pour nous UTF-8 ( c'est un standard)
        MonFlux.setCodec("UTF-8");
        // Ecriture de chaque élement de la liste de lignes dans le fichier
        for (int x=0; x<MonArgument.size(); x++)
        {
            MonFlux << MonArgument.at(x) << "\n" ;
        }
     
    }
    .
    Ce code suppose qu'un fichier MonFichier.txt existe déjà. Il sera implémenté à ta demande. A chaque nouveau lancement, dès que ton code voudra ecrire dans le fichier celui ci sera effacé et les nouvelles lignes seront écrites.
    Il faudra aussi ajouter le code suivant dans ton .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void FonctionAjouterLigne(QList<QString> MonArgument);
    J espère être clair, si tu as des questions n'hésite pas.
    A bientot et bon courage
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Points : 52
    Points
    52
    Par défaut
    J'ai quelque problème avec ton code lors de la compilation ^^

    Voilà l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    updater.cpp: In member function 'void FenUpdater::telechargement_update()':
    updater.cpp:88: error: no matching function for call to 'FenUpdater::FonctionAjo
    uterLigne(const char [36])'
    updater.h:56: note: candidates are: void FenUpdater::FonctionAjouterLigne(QList<
    QString>)
    updater.cpp: At global scope:
    updater.cpp:373: error: 'MaFenetre' has not been declared
    mingw32-make[1]: *** [release/updater.o] Error 1
    mingw32-make[1]: Leaving directory `C:/updater'
    mingw32-make: *** [release] Error 2
    J'ai donc fait comme ça :

    updater.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public:
            FenUpdater(QMainWindow *parent = 0);
            QList<QString> ListeLignes;
     
    private slots:
            void FonctionAjouterLigne(QList<QString> MonArgument);
    updater.cpp
    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
     
    void FenUpdater::telechargement_update()
    {
        FonctionAjouterLigne("Ceci est la nouvelle ligne à ajouer");
        [...]
    }
     
    // Tout à la fin du fichier !
    void MaFenetre::FonctionAjouterLigne(QList<QString> MonArgument)
    {
        // Créer un objet QFile qui contient le fichier "MonFichier.txt"
        QFile File("MonFichier.txt");
        // Ouvrir le fichier en ecriture seule
        File.open(QIODevice::WriteOnly | QIODevice::Text);
        // Création d'un objet QTextStream relatif à notre fichier (File)
        QTextStream MonFlux(&File);
        // On choisit le codec relatif au jeu de caractères voulu, pour nous UTF-8 ( c'est un standard)
        MonFlux.setCodec("UTF-8");
        // Ecriture de chaque élement de la liste de lignes dans le fichier
        for (int x=0; x<MonArgument.size(); x++)
        {
            MonFlux << MonArgument.at(x) << "\n" ;
        }
    }
    Merci encore !

  12. #12
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Salut,
    Il faut déjà commencer par remplacer "MaFenetre" par "FenUpdater".
    J'avais marqué MaFenetre pour l exemple...Dans ton cas il s'agit de FenUpdater.

    Ca devrait aller beaucoup mieux. Tiens nous au courant.
    A bientot

    PS au précédant post :
    Pense à mettre un fichier appelé MonFichier.txt dans le dossier de ton fichier .exe Normalement si tu travailles en debug ca sera le dossier de ton projet puis le dossier debug dans ce dossier.
    ex: C:\MonProjet\debug\MonFichier.txt
    A bientôt
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Points : 52
    Points
    52
    Par défaut
    Désolé ^^

    Je l'avais modifié au début quand j'ai eu le code est comme ça compiler pas j'ai supprimer le code et la je l'ai remis en oubliant de re-changer...

    Donc voilà la vrai erreur que j'avais au tout début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    updater.cpp: In member function 'void FenUpdater::telechargement_update()':
    updater.cpp:88: error: no matching function for call to 'FenUpdater::FonctionAjo
    uterLigne(const char [36])'
    updater.h:56: note: candidates are: void FenUpdater::FonctionAjouterLigne(QList<
    QString>)
    mingw32-make[1]: *** [release/updater.o] Error 1
    mingw32-make[1]: Leaving directory `C:/updater'
    mingw32-make: *** [release] Error 2
    Merci

  14. #14
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Dans ton .h il manque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void FonctionAjouterLigne(QList<QString> MonArgument);
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Points : 52
    Points
    52
    Par défaut
    Non il est bien mis j'ai oublié de le mettre dans mon post au dessus, mais il y est bien dans le code actuellement

    Il est dans "private slot" je viens de le rajouter sur le précédent post.

  16. #16
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Citation Envoyé par austin.fla Voir le message
    Non il est bien mis j'ai oublié de le mettre dans mon post au dessus, mais il y est bien dans le code actuellement

    Il est dans "private slot" je viens de le rajouter sur le précédent post.
    Il sera mieux dans le "public slot"...
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Points : 52
    Points
    52
    Par défaut
    Oui désolé, je viens de modifier

    Mais le problème est toujours présent c'est bizarre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    updater.cpp: In member function 'void FenUpdater::telechargement_update()':
    updater.cpp:88: error: no matching function for call to 'FenUpdater::FonctionAjouterLigne(const char [36])'
    updater.h:42: note: candidates are: void FenUpdater::FonctionAjouterLigne(QList<QString>)
    mingw32-make[1]: *** [release/updater.o] Error 1
    mingw32-make[1]: Leaving directory `C:/updater'
    mingw32-make: *** [release] Error 2
    Le problème ne serait pas le fait que la chaine soit une QString et qu'il faudrait le convertir en char ?

  18. #18
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Effectivement je te poste le code ,
    il faut fournir une QList<QStrinq> à l'appel de la fonction.

    tu devras donc remplacer le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FonctionAjouterLigne("chaine de caracteres à ajouter");
    Par ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ListeLignes.append("chaine de caractères à ajouter");
    FonctionAjouterLigne(ListeLignes);
    Désolé pour cette erreur (manque d'attention de ma part )
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Points : 52
    Points
    52
    Par défaut
    Super Merci beaucoup !!

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Points : 52
    Points
    52
    Par défaut
    Je me permet de relancer le post car j'ai un petit souci avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QDesktopServices::openUrl(QUrl(""))
    Enfaite je n'arrive pas a ouvrir des fichiers vidéos avec...

    Par exemple je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void FenListeur::ouverture()
    {
        if(!QDesktopServices::openUrl(QUrl("C:/Documents and Settings/Austin/Mes documents/Téléchargements/"+comboBox_film->currentText())))
            qDebug() << "Erreur d'ouverture du fichier";
    }
    Donc après plusieurs test je me suis rendu compte que c'est quand je mets le chemin manuellement que n'est pas bon...
    Je vois pas pourquoi...

    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Ouvrir un fichier texte dans WordPad
    Par Commodore dans le forum Langage
    Réponses: 5
    Dernier message: 15/06/2006, 11h32
  2. [VB6] Ouvrir un fichier text qui ce trouve sur internet!
    Par passicon dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 03/04/2006, 13h41
  3. Ouvrir un fichier texte
    Par Meno14 dans le forum Access
    Réponses: 5
    Dernier message: 28/03/2006, 17h37
  4. [C++] Menu d'aide: ouvrir un fichier texte
    Par debutanteVB.NET dans le forum C++
    Réponses: 11
    Dernier message: 15/12/2005, 23h12
  5. Ouvrir un fichier texte en lecture ET écriture
    Par Steph12 dans le forum C++
    Réponses: 12
    Dernier message: 17/06/2005, 08h08

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