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

Langage Delphi Discussion :

Remplacer le point décimal du clavier numérique par une virgule


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 466
    Points : 137
    Points
    137
    Par défaut Remplacer le point décimal du clavier numérique par une virgule
    Je souhaite avoir le caractère ',' qui s'affiche à la frappe du '.' du clavier numérique mais celà ne fonctionne pas avec la séquence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DecimalSeparator := ',';
    Application.UpdateFormatSettings := false;
    Donc quand j'entre des valeurs avec le '.' je reçois un code d'erreur du style:
    "1.1 n'est pas une valeur en virgule flotante correcte" :-/

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par PhilLU Voir le message
    Je souhaite avoir le caractère ',' qui s'affiche à la frappe du '.' du clavier numérique mais celà ne fonctionne pas avec la séquence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DecimalSeparator := ',';
    Application.UpdateFormatSettings := false;
    Donc quand j'entre des valeurs avec le '.' je reçois un code d'erreur du style:
    "1.1 n'est pas une valeur en virgule flotante correcte" :-/
    Ce code n'est pas fait pour remplacer le . par une , quand tu entre des valeurs..

    Sinon, super déterrage de topic

  3. #3
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,

    dans le OnKeyPress de la fiche tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
       begin
          if (Key = '.') Then Key := ',' ;
       end;
    il faut aussi mettre la propriété KeyPreview de la fiche à True.

    A+

    Charly

  4. #4
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
    if (Key = '.') Then Key := ',' ;
    end;
    @Charly910 : 2 remarques :
    - ce code prévaut pour tous les composants de la fiche, ce qui n'est pas forcément souhaitable (saisie de texte)
    - remplacer ',' par DecimalSeparator serait plus sûr.

    @+

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour e-ric,

    oui, s'il ne veut affecter qu'un seul TEdit, il met ce code dans le KeyPress de son TEdit

    Au vu de son post, il ne veut pas mettre DecimalSeparator, mais vraiment le virgule.

    A+

    Charly

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    bon jour
    Citation Envoyé par Charly910 Voir le message
    Bonjour,

    dans le OnKeyPress de la fiche tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
       begin
          if (Key = '.') Then Key := ',' ;
       end;
    il faut aussi mettre la propriété KeyPreview de la fiche à True.

    A+

    Charly

    attention! si vous chercher le DecimalSeparator peut etre qu'il soit . ou ,
    il faut remplace le code precedent par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if (Key in ['.',',']) Then Key := DecimalSeparator ;
    end;
    a+

  7. #7
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Je remarque:

    - le message d'erreur provient d'une tentative de conversion d'une chaîne en flottant car un '.' est trouvé à la place d'un ',' (DecimalSeparator), les fonctions de conversion standard s'appuient sur cette variable pour isoler les décimales d'où l'exception.

    - La variable DecimalSeparator est indépendante du traitement du clavier donc toute tentative de remplacement de '.' (pavé numérique) par ',' en bidouillant la variable DecimalSeparator est vouée à l'échec.

    - l'utilisation de la constante ',' à la place de la variable DecimalSeparator (dont le nom exprime clairement l'intention) est à mon avis une faute de programmation sauf si cela est réellement motivé et de sûr une source d'ennuis potentiels.

    - je ne comprend pas la solution de Tarekk73 qui traite aussi la ',' dans le gestionnaire de clavier, je n'en vois pas l'intérêt. Si DecimalSeparator = '.' on se trouve est alors vraisemblablement dans un contexte anglo-saxon, l'utilisation du '.' du pavé numérique ne pose alors aucun problème .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if (Key = '.') Then Key := DecimalSeparator ;
    end;
    est donc largement suffisant.

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Chez moi, dans le OnCreate de la fiche ShowMessage(DecimalSeparator ) m'affiche une virgule.
    et ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if (Key = '.') Then Key := DecimalSeparator ;
    end;
    me remplace le point par une virgule dans l'Edit1 : jusqu'ici tout se passe bien
    ... mais lorsque je teste la valeur de X du type Extended avec la procédure val(Edit1.text,X,code) ceci me signale une erreur car code Code <> 0
    ... on dirait donc que la procedure Val n'accepte que le point comme DecimalSeparator !!!???

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Val ne fonctionne en effet qu'avec le point. D'un autre côté, cette procédure est pour le moins vieillotte
    Il faudrait surtout que PhilLU explique pourquoi il veut forcer l'utilisateur (je déteste ça) à utiliser la virgule. Certainement des problèmes de lecture/écriture dans des fichiers...

  10. #10
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Andnotor : Val ne fonctionne en effet qu'avec le point.
    Du coup j'ai placé :
    - dans le FormCreate la mémorisation du DecimalSeparator de Windows suivi de DecimalSeparator :='.'
    - et dans le FormClose le rétablissement du DecimalSeparator de Windows.
    D'un autre côté, cette procédure est pour le moins vieillotte
    ... ça ne me gêne pas trop, ce qui me gêne davantage c'est moi qui commence à être vieillot.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  11. #11
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    @Gilbert

    je te comprends car moi aussi je suis à la retraite depuis 6 mois

    Sinon : faut il vraiment rétablir DecimalSeparator en quittant l'appli ? Je pensais que cette manip n'affectait pas Windows, mais seulement l'appli en cours ? je vais faire un test.

    A+

    Charly

  12. #12
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    @Gilbert
    je te comprends car moi aussi je suis à la retraite depuis 6 mois
    Ma parole, c'est le club du 3ème âge

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  13. #13
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    faut il vraiment rétablir DecimalSeparator en quittant l'appli ?
    Ca sert à rien, cette variable est initialisée au démarrage de l'application et après t'en fais ce que tu veux, windaube s'en tamponne.

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  14. #14
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Andnotor : Val ne fonctionne en effet qu'avec le point. D'un autre côté, cette procédure est pour le moins vieillotte
    Au fait, par quoi Val peut elle être remplacée de nos jours ???

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  15. #15
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    StrToFloat simplement

  16. #16
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re-bonjour,

    Andnotor : StrToFloat simplement
    Ok, merci beaucoup.
    Donc val(Edit1.text, X, code) reste incontournable si au retour on a besoin de code

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  17. #17
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Remarque : StrToFloat lève une exception en cas de problème alors que Val retourne un code d'erreur , il ne faut pas oublier de traiter la valeur de la variable code, à l'ancienne quoi !!

    @+

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  18. #18
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour Gilbert,

    si tu ne veux pas lever d'exception, tu as la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       StrToFloatDef(const S: string; const Default: Extended): Extended
    Qui en cas d'erreur renvoie la valeur Default (mais ce n'est pas tout à fait pareil qu'un code d'erreur ! et inutilisable pour détecter l'erreur si S peut prendre la valeur Default ...)

    A+

    Charly

  19. #19
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    Donc val(Edit1.text, X, code) reste incontournable si au retour on a besoin de code
    Je n'ai jamais rencontré de cas où on devait connaitre la position du caractère erroné !

    Dans les cas critiques, propager l'exception (dixit e-ric). Ex. lorsque je faisais des interfaces de machine outils, pas le droit à des approximations lorsqu'un axe de plusieurs centaines de kilo était lancé à 20m/s avec une accélération digne d'un sous-marin atomique !
    Sinon, la valeur par défaut (dixit Charly910) mais en général parce que la valeur est vacante et non inconvertible

    Je le répète une nouvelle fois : ne pas se fier à la localisation courante pour lire/écrire dans un fichier mais systématiquement la forcer en utilisant un FormatSettings. Ce n'est pas à l'UI de s'adapter (ex. forcer l'utilisateur à utiliser la virgule) mais au programme de rendre tout cela transparent.

    @Gilbert : tu es le premier à prôner l'écriture d'une date dans une BD par paramètre et non en dur dans la requête pour éviter des erreurs de conversion (et je plussois). Et bien c'est le même principe ; ton programme fait office de SGBD et doit assurer l'intégrité de la donnée

  20. #20
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    E-ric : ... il ne faut pas oublier de traiter la valeur de la variable code, à l'ancienne quoi !!
    ... Oui c'est souvent avec trucs simples à l'ancienne qu'on s'en sort le mieux.

    Charly910 : tu as la fonction StrToFloatDef(const S: string; const Default: Extended): Extended
    Ok, merci, je viens de la trouver enfin dans SysUtils mais elle est introuvable dans l'aide de D6 ... mais comme tu dis "ce n'est pas tout à fait pareil qu'un code d'erreur".

    Andnotor : Je n'ai jamais rencontré de cas où on devait connaitre la position du caractère erroné !
    En fait j'étais en-train de bidouiller un petit Parser pour la saisie-évaluation de fonctions quelconques du type f(x) et où la première étape consiste à vérifier si la syntaxe utilisée lors de la saisie est correcte ... et en cas d'erreur je positionne le Caret du TEdit à l'endroit de l'erreur et un message signale alors le type d'erreur... Mais bon j'aurais pu me contenter du seul message d'erreur et laisser l'utilisateur se débrouiller tout seul pour trouver la position de l'erreur.

    @Gilbert : tu es le premier à prôner l'écriture d'une date dans une BD
    Oups, j'ai relu entièrement cette discussion où je n'ai jamais parlé de date ... mais c'est pas grave.

    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/05/2011, 15h00
  2. Réponses: 6
    Dernier message: 06/01/2010, 14h48
  3. Réponses: 6
    Dernier message: 27/12/2009, 21h35
  4. remplacer un point par une virgule
    Par paolo2002 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/04/2008, 09h43
  5. [C#] Remplacer un point par une virgule
    Par SLicTa dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/01/2008, 13h08

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