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++Builder Discussion :

Problème de virgule et de point


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut Problème de virgule et de point
    Re-bonjour

    J'ai un souci dont je viens de m'apercevoir avec mon prog...

    Voilà, j'ai une base de données que j'affiche dans une DBGrid. J'ai un bouton modifier qui me perts de modifier la valeur des champs de la ligne en question. Parmis ces champs, j'ai des nombres que j'affiche dans une TEdit lorsque je veux les modifier.

    Le problème, c'est que ces nombres apparaissent avec des virgules "," dans DBGrid, et me sont affichés également avec une virgule dans ma TEdit. Or lorsque j'entre un nombre dans une TEdit, le caractère qui marque la décimale n'est pas une virgule "," mais bien un point "." !!

    Du coup, imaginons que j'appuie sur mon bouton modifier, le TEdit m'affiche par exemple "12,3456". Je décide de ne pas changer cette valeur et valide mon changement, et j'ai un beau "12" qui s'affiche dans ma grille comme la lecture s'arrête à la virgule puisque ce n'est pas un caractère reconnu dans le format nombre.

    Je sais pas si j'arrive à me faire comprendre, je peux être plus flou si vous voulez ahahaha

    Merci à vous !

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Hello,

    Est-ce que tu as essayé de modifier la valeur de DecimalSeparator ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DecimalSeparator = ',';

  3. #3
    Membre confirmé
    Profil pro
    Concepteur traitement de signal
    Inscrit en
    Août 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Concepteur traitement de signal
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2004
    Messages : 192
    Par défaut
    Heuuu non, c'est justement ce genre de valeur que je cherchais mais je sais pas ou elle se trouve ?
    C'est une valeur de la DBGrid ?
    Sinon je suppose qu'il faudrait que je trouve le moyen de dire à ma base de données PARADOX (oui me semble que j'avais oublié de le préciser...) que le séparateur décimale est un point et pas une virgule mais je sais pas comment faire non plus :S

  4. #4
    Membre éclairé Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Par défaut
    salut
    Citation Envoyé par androz Voir le message
    mais je sais pas ou elle se trouve ?
    C'est une valeur de la DBGrid ?
    help bcb:

    DECIMALSEPARATOR: Caractère utilisé pour séparer la partie décimale et la partie entière d'un nombre (par exemple, une virgule dans 3,14). Valeur par défaut : le séparateur décimal sélectionné pour votre pays dans le Panneau de configuration de Windows (Paramètres régionaux).
    donc tu dois lui affecter le ',' en mettant l'instruction proposée par totoche76 dans le constructeur de la classe mère de ton application.

  5. #5
    say
    say est déconnecté
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void __fastcall MyTools::SetDecimalSeparator(const char* separator)
    {
            if( strcmp(separator,",") == 0 || strcmp(separator,".") == 0 )
            {
                long nLocale;
                nLocale = GetUserDefaultLCID();
                SetLocaleInfo(nLocale, LOCALE_SDECIMAL, separator);
            }
    }

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Citation Envoyé par androz Voir le message
    Sinon je suppose qu'il faudrait que je trouve le moyen de dire à ma base de données PARADOX (oui me semble que j'avais oublié de le préciser...) que le séparateur décimale est un point et pas une virgule mais je sais pas comment faire non plus :S
    Dans l'administrateur BDE (bdeadmin.exe) ??
    Onglet Configuration -> Système -> Formats -> Number ?

  7. #7
    Membre très actif Avatar de nirgal76
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 923
    Par défaut
    Sous oracle, on fait une requete pour changer le separateur decimal (en fait, accepter les 2, que ce soit le point ou la virgule :

    ALTER SESSION SET NLS_NUMERIC_CHARACTERS='.,'

    C'est peut etre le même genre de chose qu'il faut faire sous paradox mais là, je ne connais pas (plus) ce sgbd, je ne peux pas aider plus que ça.

  8. #8
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2002
    Messages : 16
    Par défaut
    tu pourrais peut être utiliser le gestionnaire OnKeyPress de ta DBGrid, dans le genre si key==',' alors key='.', ça devrait aider à résoudre ton pb, tout du moins la partie saisie si tu saute le TEdit...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de virgule et/ou point
    Par thierry007 dans le forum VB.NET
    Réponses: 23
    Dernier message: 12/08/2014, 14h10
  2. Problème de virgule
    Par Drax dans le forum Débuter
    Réponses: 12
    Dernier message: 04/12/2005, 14h40
  3. [D7] Problème de virgule flottante
    Par Magnus dans le forum Langage
    Réponses: 17
    Dernier message: 22/09/2005, 14h56
  4. Problème de Regex ... avec un point
    Par bugalood dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2005, 10h26
  5. [Kylix] Problème de virgule/DBExpress
    Par jeanphy dans le forum EDI
    Réponses: 5
    Dernier message: 12/02/2003, 16h29

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