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]Recupération de donnée et conversion


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 11
    Par défaut [MFC]Recupération de donnée et conversion
    Bonjour, je travails sous embedded Visual C++ (pour windows CE)
    Ne vous inquiétez pas j'ai fait des recherches sur le forum.

    Je souhaites recuperer des données contenues dans un fichier.
    Il peut sagir de double, de char, d'int, ....

    Pour celà je passe par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arLoad.ReadString( str );
    Je recupere donc un CString.

    Je souhaite alors onvertir un CString en double.
    Le forum donne beaucoup de solution dont notament
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CString szDoubleString = "3.1415";
     
    double pi;
     
    pi = atof(szDoubleString);
    la conversion inverse est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CString szDoubleString;
     
    double pi=3.1415;
     
    szDoubleString.Format("Pi : %.2f",pi);




    Mais quand j'utilise cette fonction j'ai comme erreur:
    error C2664: 'atof' : cannot convert parameter 1 from 'class CString' to 'const char *'


    Je ne sais pas pourquoi!!!
    Si quelqu'un a une meilleur solution pour recuperer les données dans les fichiers.....

    Merci à vous.

  2. #2
    Membre Expert
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pi = atof(( (LPCTSTR) szDoubleString);

  3. #3
    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
    Par défaut
    bonsoir ,
    je connais pas win CE mais c'est très bizarre la CString possède l'opérateur surchargé (const char *) la fonction atof et toute la clique ont une signature const char * donc ça doit fonctionné directement sans appel de cast explicite .
    Tu serais pas en unicode par hasard ? (ça m'etonnerait pas)
    dans ce cas il faut utilisé strtod ou wcstod voir la doc MSDN et regarder le post it de la faq sur l'utilisation pour les conversions d'une CString ....

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 11
    Par défaut
    strtod to convert a
    * string to a double-precision
    Le probleme de cette fonction que j'ai trouvé aussi, c'est qu'elle marche avec des char*

    Et là se pose un nouveau probleme de conversion...
    CString vers char*.
    Je sais que ça a déjà été abordé à plusieurs reprises sur le forum, mais pour moi ça ne marche pas.


    Voilà les differentes méthodes de conversion que j'ai essayé
    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
    	char   *string, *stopstring;
    	CString	str;
    	double x;
    	long   l;
    	int    base;
    	unsigned long ul;
    	str = "3.1415926This stopped it";
     
    //	string=(char*)LPCTSTR (str); 
    //	char *p = new char[str.GetLength()+1];
      //  strcpy( p, LPCTSTR(str) );
    	/////////////////////////////////////////
    	CString strValue="121110987654321";
    //	double	dValue = atof(strValue);
    	////////////////////////////////////////////////
    	CString MyString = "ABCDEF";
    	char * szMyString = (char *) (LPCTSTR) MyString;
    	////////////////////////////////
    	char *pBuffer = new char[1024];
    //	CString strBuf = "Test";
    //	pBuffer = strBuf.GetBuffer(0);
        ///////////////////////////////////////////
    	CString MyStringvoila; 
    	char * pcCode = (char *)str.GetBuffer(0);
    	///////////////////////////////////////////
    Soit la conversion plante et me donne des erreurs à la compilation, soit je ne recupere que le premier caractere de mon CString dans mon char*.
    "3.12455" -> 3



    -------------------------------------------------
    Peut etre faut il utiliser une autre methode pour recuperer un nombre depuis un fichier??

  5. #5
    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
    Par défaut
    salut, tu m'a pas reondu unicode ou non ? ( a mon avis oui ).

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 11
    Par défaut
    Meaculpa, je viens de trouver la solution sur CodePPc

    Conversion de CString en double
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	CString ess = "3.223651321";
    	wchar_t* stopstring;
    	double d = wcstod(ess.GetBuffer(0), &stopstring);
    	CString msg;
    	msg.Format(_T("Ton nombre est %f"), d);
    	AfxMessageBox(msg);
    Conversion de double en CString
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CString MyString; 
    double MyDouble; 
     
    MyString.Format( L"%f", MyDouble );
    En revenche, je ne comprends pas quand il faut utiliser wcstod au lieu de strtod, c'est une question d'unicode?

    La classe CString code le texte en UNICODE (un caractère de type char est codé sur 2 octets)
    C'est pour ça l'explication de wcstod??
    Merci en tout cas pour votre aide.

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    Citation Envoyé par farscape
    salut, tu m'a pas reondu unicode ou non ? ( a mon avis oui ).
    ben voilà,
    c'est beau l'unicode

  8. #8
    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
    Par défaut
    En revenche, je ne comprends pas quand il faut utiliser wcstod au lieu de strtod, c'est une question d'unicode?
    ouiiiiiii

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 11
    Par défaut
    merci pour l'info, et merci encore pour ce forum.

    [Résolu]

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 29/06/2005, 20h55
  2. Pb recupération de donnée
    Par Mano dans le forum ASP
    Réponses: 16
    Dernier message: 11/05/2005, 18h08
  3. [MFC] recupération date modif fichier
    Par Gothico dans le forum MFC
    Réponses: 7
    Dernier message: 21/01/2005, 18h47
  4. Réponses: 2
    Dernier message: 20/01/2005, 15h19
  5. [Indy TCPClient] Recupérer le données reçues
    Par fandor7 dans le forum Web & réseau
    Réponses: 8
    Dernier message: 29/06/2003, 21h52

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