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] Probl�me de conversion CString vers Char *


Sujet :

MFC

  1. #1
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par d�faut [MFC] Probl�me de conversion CString vers Char *
    Bonjour,

    J�ai un petit probl�me de conversion de type Cstring vers char *

    En faite actuellement je r�cup�re cette var comme ceci : CString(V_BSTR(&pVDir)
    Ou &pVDir est du type :
    Je dois donc convertir CString(V_BSTR(&pVDir) ceci en char * puisqu�il doit �tre envoy� dans une autre fonction qui �crit un fichier batch, or pour l�instant sans conversion le fichier est cr�er mais le chemin (pVDir) est vide.

    Merci de votre aide,
    Cordialement.

    Ps : j�ai regard� ce lien mais il ne m�a pas vraiment aider (il est possible que je ne comprenne pas son fonctionnement aussi :/)

  2. #2
    Membre exp�riment� Avatar de Grulim
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    234
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 234
    Par d�faut
    Je n'ai pas exactement compris, mais si c'est convertir un VARIANT vers un CString, je ferais un truc du genre:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    CString sDir = (LPCTSTR)(_bstr_t)_variant_t(pVDir);

  3. #3
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par d�faut
    Bonjour,

    Non je n'ai pas besion de convertir le VARIANT vers un CString, c'est d�j� fait mais de convertir un CString en char * (ou si il existe une conversion VARIANT vers un char *)

    En faite j'ai une fonction:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    infolot = new InfoLot(("X", "Y");
    Ou X et Y doivent �tre de type char *

    X correspond CString(V_BSTR(&pVDir) et Y a CString(V_BSTR(&pVCmd). Cependant &pVDir et &pVCmd sont de type VARIANT.

    Voila ce que j'ai fait c'est un peu bourrin (et certainement faux) mais �a fonctionne:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    						char *test; 
    						test == CString(V_BSTR(&pVDir));
     
    						infolot = new InfoLot((char *) test, "");
    Pour l'instant je n'ai pas encore r�ussi a r�cup�rer &pVCmd

    Merci de ton aide,
    Cordialement.

  4. #4
    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
    pour une CString en Char * voir fonction CString::GetBuffer.

  5. #5
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Pour un const char * par contre, �a se fait tout seul:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    CString csTest = "Coucou";
    const char *sczChaine = csTest;
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par d�faut
    Bonjour,

    Merci farscape & M�dinoc , Je vais regarder �a .

    .: Edit :.
    @M�dinoc: Voila ce que j'ai fait:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    						CString(V_BSTR(&pVDir));
    						char *sczChaine = V_BSTR(&pVDir);
    Voila ce que j'obtient:
    C:\Program Files\Microsoft Visual Studio\MyProjects\Stagiaire\Reconstruction\ReconstructionDlg.cpp(712) : error C2440: 'initializing' : cannot convert from 'unsigned short *' to 'char *'
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    *Note: Je n'y connai rien en C++ je commence juste le C a l'�cole..

  7. #7
    Membre exp�riment� Avatar de Grulim
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    234
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 234
    Par d�faut
    Citation Envoy� par Darkenshin
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    						CString(V_BSTR(&pVDir));
    						char *sczChaine = V_BSTR(&pVDir);
    Pour faire ce que tu veux, il faut cr�er une variable de type CString puis faire un GetBuffer:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    CString sTmp((LPCTSTR)_bstr_t(V_BSTR(&pVDir)));
    char* szChaine = sTmp.GetBuffer(1);
    ...
    sTmp.ReleaseBuffer();

  8. #8
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par d�faut
    Merci Grulim, je vais regarde �a

  9. #9
    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
    vu l'erreur tu dois etre en UNICODE .
    j'utiliserais LPTSTR .

  10. #10
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    farscape: Vu l'erreur, c'est ce que je pense aussi.

    Dans ce cas, le GetBuffer ne devrait pas marcher non plus avec un char *... Ici, il faudra utiliser un LPCTSTR pour la conversion const directe ou un LPTSTR pour le GetBuffer...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Par d�faut
    Un Grand Merci � vous tous.

    Voila ce que j'ai fait:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CString sDir = V_BSTR(&pVDir); 
    char* szDoss = sDir.GetBuffer(1); 
     
    CString sCmd = V_BSTR(&pVCmd); 
    char* szCommand = sCmd.GetBuffer(1); 
     
    infolot = new InfoLot((char *)sDir.GetBuffer(1), (char *)sCmd.GetBuffer(1));
    m_lots.SetItemDataPtr(index,(void *)infolot);
     
    sDir.ReleaseBuffer();
    sCmd.ReleaseBuffer();
    Enfin le programme est assez complexe certaine conversion sont d�j� faites dans d'autre fichier qui pointes sur d'autres varriables ect.. donc de temps en temps il y a des bug m�me ave ce que vous de donner.

    Ce probl�me est r�solu .

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 17/08/2010, 12h49
  2. R�ponses: 1
    Dernier message: 17/06/2009, 18h18
  3. [MFC] pb de conversion CString en unsigned short
    Par kanabzh29 dans le forum MFC
    R�ponses: 5
    Dernier message: 04/05/2006, 10h29
  4. Probl�me de conversion decimal vers Hexa
    Par Elbarto dans le forum C++
    R�ponses: 1
    Dernier message: 06/02/2006, 19h37
  5. R�ponses: 2
    Dernier message: 13/12/2005, 09h22

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