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

MFC Discussion :

[MFC][VC6.0] Gestion des paramètres régionaux


Sujet :

MFC

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Points : 118
    Points
    118
    Par défaut [MFC][VC6.0] Gestion des paramètres régionaux
    Bonsoir à toutes et à tous,

    J'ai une application composée de plusieurs processus à maintenir et j'ai un soucis à cause des paramètres régionaux.

    Je m'explique. Dans un des processus, je sauvegarde un fichier XML via MSXML qui contient pour simplifier des flottants. Lorsque j'édite le fichier XML avec NOTEPAD je constate que les flottants ont pour caractère décimale ','.

    Dans un second processus, je viens lire le contenu du fichier et via sscanf je récupère les flottants mais sscanf s'arrête après avoir lu et affecté un seul flottants. Après analyse j'ai constaté que si sscanf n'arrive qu'à lire le premier flottant c'est parce qu'il s'attend à avoir le caractère '.' comme caractère décimale au lieu de ',' ... j'ai modifié à la main mon fichier pour valider cette hypothèse.

    Dans un troisième processus je réalise les mêmes opérations que le second processus et cette fois ci la lecture des flottants via sscanf ne pose aucun soucis.

    Je pense que mon problème vient du fait que quelque part, les paramètres régionaux sont modifiés par un processus mais je n'ai pas encore trouvé où ... en plus de ça je n'en suis pas certain à 100% mais comme sscanf est sensible aux paramètres régionaux et que le problème de lecture est dû au format de la décimale c'est ce que je me dit.

    Bref, j'en arrive à mes questions. Est ce que mon problème vient bien des paramètres régionaux pouvant être modifiés par un des processus ? Est ce que ces paramètres sont gérés :
    * pour tout le système ?
    * pour une seule application ?
    * autres ?

    D'avance merci pour votre aide.

    Bonne soirée à toutes et à tous.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    setlocale devrait remédier a ton problème .
    voir faq: http://cpp.developpez.com/faq/vc/?pa...CTimeFrenchSet

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Points : 118
    Points
    118
    Par défaut
    salut !

    Tu m'avais déjà parlé de cette méthode et je sais qu'elle permet modifier / connaitre la configuration des paramètres régionaux.

    Ceci étant dit cela ne répond pas tout à fait à ma problématique et pur précisier d'avantage les choses je vais donner un complément d'informations.

    Mon application est multi processus et j'en possède les sources. Dans certains processus je dois lire des flottants depuis une chaine de caractère et le caractère utilisé dasn ces chaines pour la décimale est la virgule. En analysant les sources, j'ai trouvé un appel à la méthode setlocale qui possitionne les paramètres régionaux sur la france et par conséquent l'utilisation de la virgule pour la décimale.

    Tout devrait donc normalement fonctionner lorsque je fais un sscanf pour récupérer mes flottants mes le hic c'est que sscanf ne parvient pas à lire et récupérer les flottants parce qu'il attend le point comme caractère décimale au lieu de la virgule.

    J'ai donc l'impression que malgré le fait qu'un de mes processus possitionne bien les paramètres régionaux, ces derniers ne sont pas ceux sur lesquels se base la méthode sscanf pour lire mes flottants.

    Pour mieux comprendre et résoudre mon problème je cherche à savoir coment sont gérés les paramètres régionaux (pout tout un système, par application, par thread, ...).

    J'ai recherché dans le code les éventuels appels à setlocale, ainsi qu'à setthreadlocale, pour essayer de savoir qui modifie les paramètres.

  4. #4
    Membre confirmé Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Points : 521
    Points
    521
    Par défaut
    A partir de VS2005, tu peux utiliser les fonctions de la CRT en spécifiant le paramètre régionale. Les fonctions se terminent en '_l'.
    Mais comme tu es sous VC6, tu n'as pas le choix que de commuter à chaque fois avec setlocale().
    J'avais le meme genre de soucis, dans l'UI j'affichais avec des ',' , et comme j'avais un 'parser' je voulais des '.' . Avec VS2005, c'est du gateau ...

    sscanf se base bien sur setlocale. pour un type double, il passe par la fonction strtod()

    si tu veux lire un '.' faut faire un setlocale("C");
    pour les paramètres régionaux du système : setlocale(NULL);

    @+

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

Discussions similaires

  1. [bash / sh] Mauvaise gestion des paramètres d'entrée
    Par Rei Angelus dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 05/04/2008, 06h08
  2. Script pour changer valeur des paramètres régionaux
    Par Foxtrot dans le forum Windows XP
    Réponses: 0
    Dernier message: 14/12/2007, 19h38
  3. [Système] Récupération des paramètres régionaux
    Par menuge dans le forum Langage
    Réponses: 6
    Dernier message: 28/08/2007, 19h57
  4. Modification des paramètres régionaux et folders options
    Par Looping_V60 dans le forum Access
    Réponses: 1
    Dernier message: 07/06/2006, 19h02
  5. [Conseils généraux] Gestion des paramètres
    Par Julien Dufour dans le forum Access
    Réponses: 1
    Dernier message: 02/05/2006, 11h04

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