Résultats de 1 à 5 sur 5

Sujet : CEdit conversion Cstring en int

  1. #1

    CEdit conversion Cstring en int

    Bonjour,

    je debute en programmation MFC , je m\'exerce en faisant un prog qui ajoute deux nombres entrés dans des zones de texte,

    donc je crée mes zones en visuel , je crée des variables membres Cedit

    et ensuite je recupère leur valeur comme ca :

    Code:
    CString sNum1;
    CString sNum2;
    CString sResultat;
    
    m_num1edit.GetWindowText(sNum1);
    m_num2edit.GetWindowText(sNum2);
    comment convertir le contenu de sNum1 et sNum2 en int pour faire l\'addition ?

    merci d\' avance.

  2. #2
    genre pourquoi ce code marche pas ( je suis pas loin ..)

    merci pour votre aide


    void CMfc1Dlg::OnCalc()
    {

    CString sNum1;
    CString sNum2;
    CString sResultat;

    m_num1edit.GetWindowText(sNum1);
    m_num2edit.GetWindowText(sNum2);

    int n1,n2;

    sscanf((char*)&sNum1,\"%d\",&n1);
    sscanf((char*)&sNum2,\"%d\",&n2);


    sResultat.Format(\"%d\",n1+n2);

    m_Resultedit.SetWindowText(sResultat);


    }

  3. #3
    Alors , pas d \'idée ??

    Si quelqu\'un pourrait au moins me donner un lien vers une page ou je peux trouver de l \'info la dessus ...

    Merci

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    8
    Salut,

    La partie de code fausse se trouve dans le sscanf.

    sscanf((char*)&sNum1,\"%d\",&n1);

    Lorsque tu fais ((char*)&sNum1, tu caste en char * un pointeur sur un objet CString et nom un pointeur sur la chaine elle-même.
    L\'objet CString encapsule un pointeur sur une chaine de caractère.
    Si tu veux un pointeur récuperer celle-ci, il faut que tu fasses appel à la fonction LPTSTR GetBuffer(int nMinBufLength) ou nMinBufferLenght est la taille minimum de la chaine à récupérer sans le caractère de fion c de chaine (\\0).

    Si tu veux que cela marche, voici ce qu\'il faut faire :

    sscanf(sNum1.GetBuffer(0),\"%d\",&n1);
    sscanf(sNum2.GetBuffer(0),\"%d\",&n2);

    Il faut ensuite que tu fasse un ReleaseBuffer(), cette fonction libère l\'espace mémoire alloué pa GetBuffer(0).

    sNum1.ReleaseBuffer();
    sNum2.ReleaseBuffer();

    A+

  5. #5
    Visiteur MP
    Visiteur MP
    Salut,

    j ai reussi a resoudre mon probleme en faisant

    m_num1edit.GetWindowText(sNum1);

    int num;

    num = atoi(sNum1);

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé