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

Windows Discussion :

Problème Unicode en C


Sujet :

Windows

  1. #21
    Membre actif Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Points : 237
    Points
    237
    Par défaut
    Ah ouais ? j'ai toujours cru que c'était pas standard.

  2. #22
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 39
    Points : 6
    Points
    6
    Par défaut
    Salut les programmeurs,

    Vous pouvez pas imagine que ce que passez c'est dernier jours!
    disque dure de mon pc portable est plante, alors Go LiveLinux, 8h de copier 122Go vers PC fixe, une seul redémarrage est disque dure du PC fixe plant aussi ... alors go acheter un nouveau est un autre 8h du copiage vers pc portable !!! ... Mais pas grave, une experiance

    - - - - - - - - - - - - - - - - - -

    j'ai chercher sur l'internet une solution .NET pour Dump Hexadécimal d'un texte mais toujours résultats des valeurs hexa!

    comment convertir un character to c-code hexa sil-vous-plaît ??

  3. #23
    Membre actif Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Points : 237
    Points
    237
    Par défaut
    Eh ben t'as eu de gros pbs de disque dur

    Il faut que tu saches que l'hexadécimal c'est une juste un représention des nombres (utilisant 16 caractères différents), le décimal en est une autre (utilisant 10 caractères). Un nombre peut être écrit en utilisant la représentation que tu veux mais c'est toujours le même nombre.

    Si tu veux afficher la représentation hexadécimale d'un nombre tu peux faire:
    Après pour afficher un dump d'un fichier, tu n'as qu'à lire le fichier octet par octet et afficher la représentation hexadécimale de chaque octet lu.

  4. #24
    Membre éprouvé
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Points : 1 018
    Points
    1 018
    Par défaut
    Salut tout le monde,
    Intéressante cette discussion.

    Voici ma maigre contribution:

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #define UNICODE
    #define _UNICODE
    #include <windows.h>
    #include <tchar.h>
     
    int WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR pStr,int nCmd)
    {
       wchar_t const * txt = L"\uFEE1\uFEAA\uFED8\uFEDF\uFE83 \uFE93\uFEAE\uFEDB";
       MessageBoxW(0, txt, L"Sport", MB_OK);
     
       txt = L"\uFE94\uFEF4\uFE91\uFEAE\uFECC\uFEDF";
       MessageBoxW(0, txt, L"Langue", MB_OK);
       return 0;
    }


    Pour la traduction, j'ai fait appel au classique traducteur Google.
    Et pour récupérer la valeur Unicode des symboles, j'ai utilisé Charmap.

    Mais il y a quand même quelque chose qui me turlupine. Peut-être une interrogation sur l'interprétation de ces mêmes caractères entre les formats Little et Big Endian ou plutôt sur la représentation littérale que le système en fait. Enfin, bref.

    Il faudrait voir aussi s'il ne serait pas plus intéressant de placer ces chaines dans un fichier ressource.

  5. #25
    Membre actif Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Points : 237
    Points
    237
    Par défaut
    Citation Envoyé par maxim_um Voir le message
    Il faudrait voir aussi s'il ne serait pas plus intéressant de placer ces chaines dans un fichier ressource.
    Je suis bien d'accord, j'avais suggéré un fichier de données externe, ça serait bien plus pratique.

  6. #26
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 39
    Points : 6
    Points
    6
    Par défaut
    Salut les programmeurs,

    J'ai bien avancer dans mon projet gras a vous aide, je ne oublier jamais votre aide, sur-tous monsieur Twindruff

    J'ai trouver que votre solution monsieur Twindruff est vraiment bien est il est toujours marche bien, je peux afficher des characters Unicode par représentation hexadécimale, ou bien juste taper code UNICODE, par exemple ESPACE = "\u0628" أ = "\u0623" etc..
    avec solution de monsieur Twindruff je fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((wchar_t*)(char[])L"\u0623")
    j'ai trouver une liste complet des chracters Unicode ici : http://www.babelstone.co.uk/Software/BabelMap.html

    Pour changer titre de la fenêtre est afficher character Unicode أ avec fonction SetWindowText():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetWindowText(hwnd, ((wchar_t*)(char[])L"\u0623") );
    Ça marche bien, mais j'ai quelque petit problème avec l'affichage des variables qui son déclarer dans mon petit programme C, Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int a;
    a = 123;
    SetWindowText(hwnd, ((wchar_t*)(char[])L"\u0623 %d", a)  );
    Comment sil-vous-plaît afficher un variable déjà déclarer ??

  7. #27
    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
    Citation Envoyé par freesaif Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetWindowText(hwnd, ((wchar_t*)(char[])L"\u0623") );
    C'est quoi cette horreur?
    un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetWindowText(hwnd, L"\u0623");
    devrait suffire.

    Citation Envoyé par freesaif Voir le message
    Ça marche bien, mais j'ai quelque petit problème avec l'affichage des variables qui son déclarer dans mon petit programme C, Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int a;
    a = 123;
    SetWindowText(hwnd, ((wchar_t*)(char[])L"\u0623 %d", a)  );
    depuis quand SetWindowText attend un chaine formatée?

    Citation Envoyé par freesaif Voir le message
    Comment sil-vous-plaît afficher un variable déjà déclarer ??
    Comme d'habitude, il faut formater la chaine au préalable.
    http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  8. #28
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 39
    Points : 6
    Points
    6
    Par défaut
    Salut,

    Tu as raison à propos de SetWindowText(hwnd, L"\u0623"); Merci nicolas.sitbon

    Mais j'ai encore des difficultés à afficher la variable, je ne peux pas utiliser sprintf_s car je travaille pas sur Visual Studio mais je peux utiliser _tprintf !!! j'ai pas encore d'expérience de formatage des chaînes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TCHAR buffer[50];
    int i = 5;
    _tprintf(buffer,"abc %d", i);
    SetWindowTextW(hwnd, buffer);
    Aucun erreur mais... buffer est toujours vide !!
    Pourquoi ??

    RAPPEL: Je veux afficher la variable 'i' dans le titre de la fenêtre.

  9. #29
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    _tprintf affiche sur la console et ce n'est pas ce que tu veux faire, tu veux afficher dans un buffer.

    utilise _stprintf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TCHAR buffer[50];
    int i = 5;
    _stprintf(buffer,"abc %d", i);
    SetWindowTextW(hwnd, buffer);
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  10. #30
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    N'utilise pas explicitement SetWindowTextW si tu utilises _stprintf...
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TCHAR buffer[50];
    int i = 5;
    _stprintf(buffer, _T("abc %d"), i);
    SetWindowText(hWnd, buffer);
    Ou bien, avec un SDK assez récent, on peut utiliser les fonctions de <strsafe.h>:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TCHAR buffer[50];
    int i = 5;
    /* Note: Oui, c'est bien sizeof ici, en nombre de bytes.
       Si j'avais voulu mettre le nombre de caractères,
       j'aurais utilisé StringCchPrintf à la place. */
    StringCbPrintf(buffer, sizeof buffer, _T("abc %d"), i);
    SetWindowText(hWnd, buffer);

    Edit: Tiens, c'est nul, il n'y a pas d'équivalent à _scprintf() (ou snprintf(NULL) sous C99) dans <strsafe.h>...
    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.

  11. #31
    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
    Citation Envoyé par Médinoc Voir le message
    Edit: Tiens, c'est nul, il n'y a pas d'équivalent à _scprintf() (ou snprintf(NULL) sous C99) dans <strsafe.h>...
    Moi, ce qui me manque le plus, c'est un équivalent à asprintf().
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    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
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 39
    Points : 6
    Points
    6
    Par défaut
    Bonjour les programmeurs,

    Oui, vous avez raison a propos de _stprintf, mais buffer reste vide dans mon application Unicode!, est si je ajoute _T je get erreur que il undeclared! même j'ai inclue header correspondant, alors j'ai remplacer _T par L"" est ca marche bien, est a propos de SetWindowText et SetWindowTextW les deux marche bien! est la même chose pour MessageBox et MessageBoxW.

    voila le code final (avec test de MessageBox):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TCHAR buffer[50];
    int i = 123;
    _stprintf(buffer,L"\u0623\u0020%d", i);
    SetWindowTextW(hwnd,buffer);
    MessageBoxW(NULL,buffer,buffer,MB_OK|MB_RTLREADING|MB_RIGHT);
    NOTE:
    \u0623 = أ
    \u0020 = Espace
    Compilateur TCC: http://bellard.org/tcc/
    Bute : Développez une application Unicode avec TCC.

    Est Merci a tous les programmeurs Twindruff, Médinoc, Melem, maxim_um, nicolas.sitbon, ram-0000, qui ma aider a avancer dans mon projet
    Bravo a vous

  14. #34
    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
    NON, ton problème vient du fait que tu as oublié d'inclure tchar.h
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  15. #35
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 39
    Points : 6
    Points
    6
    Par défaut
    Si, j'ai inclue les header + define de Unicode, _UNICODE, _MBCS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #define UNICODE
    #ifdef UNICODE
    #define _UNICODE
    #else
    #define _MBCS
    #endif
    #include <windows.h>
    #include <tchar.h>
    
    ... CODE ...
    Twindruff il ma le signe
    http://www.developpez.net/forums/d80...c/#post4600934

    Merci nicolas.sitbon

  16. #36
    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
    Est ce que ce code compile et s'exécute correctement chez toi?
    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
    #define UNICODE
    #define _UNICODE
    
    #include <windows.h>
    #include <tchar.h>
    
    LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
       switch(msg)  
       {
          case WM_DESTROY:
          {
             PostQuitMessage(0);
             return 0;
          }
       }
    
       return DefWindowProc(hwnd, msg, wParam, lParam);
    }
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
       MSG  msg ;    
       HWND hwnd;
       WNDCLASS wc = {0};
    
       wc.style         = CS_HREDRAW | CS_VREDRAW;
       wc.lpszClassName = _T("Window");
       wc.hInstance     = hInstance ;
       wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
       wc.lpfnWndProc   = WndProc;
       wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
       wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    
       RegisterClass(&wc);
       hwnd = CreateWindow(wc.lpszClassName, _T("العربية"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, 
                           100, 100, 300, 200, NULL, NULL, hInstance, NULL);  
    
       ShowWindow(hwnd, nCmdShow);
       UpdateWindow(hwnd);
    
       while( GetMessage(&msg, NULL, 0, 0) > 0) 
       {
          DispatchMessage(&msg);
       }
    
       return (int) msg.wParam;
    }
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  17. #37
    Membre actif Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Points : 237
    Points
    237
    Par défaut
    Ça compilera pas parce que le compilo ne sait lire que des fichiers source ANSI, il ne lit pas l'UTF-8 ou l'unicode.
    Par contre avec un titre de fenêtre ANSI ça devrait être bon.

    Edit: après un ptit test, le compilo a du mal avec la macro _T (pareil pour TEXT).

  18. #38
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 39
    Points : 6
    Points
    6
    Par défaut
    Salut,

    Non, il se compile pas, comme Twindruff ta dit TCC supporte pas UTF-8, alors je doit remplacer "العربية" par "\u[CODE-UNICODE-CORRESPONDANT]" et _T par L"" est ça va marcher, l'affichage du string Unicode + variable est réglé

    Mais la j'ai des difficulté a remplir une string Unicode !!!
    je sais pas pour quoi ça marche pas !!!

    Je veux compare deux string Unicode par strcmp()

    string a
    string b
    a = "\u0623" ( أ )
    b = "\u0628" ( ب )
    si ( a = b ) faire
    messagebox "Oui"
    sinon faire
    messagebox "Non"
    finsi


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TCHAR a[50];
    TCHAR b[50];
    a = L"\u0623"; // ou bien _stprintf(a, L"\u0623"); ou a = "\u0623";
    b = L"\u0628"; // ou bien _stprintf(b, L"\u0628"); ou b = "\u0628";
    if ( strcmp(a, b) == 0 )
    MessageBoxW(NULL,L"Oui",L"Oui",MB_OK|MB_RTLREADING|MB_RIGHT);
    else
    MessageBoxW(NULL,L"Non",L"Non",MB_OK|MB_RTLREADING|MB_RIGHT);
    Je peu pas même remplir string 'a', j'ai tester aussi avec:
    _stprintf(a, L"\u0623");
    a = "\u0623";

    je get erreur:
    identifier expected.
    ou
    incompatible types for redefinition of 'a'.

  19. #39
    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
    Plutôt que de t'obstiner à utiliser un compilateur qui visiblement ne répond pas à tes attentes, pourquoi ne pas te tourner vers un autre compilateur?
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  20. #40
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    En effet. L"" N'est pas approprié quand on appelle des fonctions TCHAR.

    Que se passe-t-il si tu utilises TEXT() à la place de _T() ?
    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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Problème unicode / caractères spéciaux + écriture de fichier
    Par Mysti¢ dans le forum Général Python
    Réponses: 12
    Dernier message: 01/12/2010, 12h38
  2. Problème unicode avec _ungetwch() (conio)
    Par haypo dans le forum Windows
    Réponses: 1
    Dernier message: 05/04/2009, 14h24
  3. [D7] Problème UNICODE : TTntStringList
    Par Zepeq dans le forum Composants VCL
    Réponses: 0
    Dernier message: 06/03/2008, 16h19
  4. [MySQL] Problème unicode sortie BD (MySQL 5)
    Par bractar dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/05/2007, 08h34
  5. Problème unicode sortie BD
    Par bractar dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 18/05/2007, 16h20

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