Addstring probleme de type (LPCTSTR)

Résolu
Signaler
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
-
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
-
Bonjour,

Voila je debute avec les dialogbox et je precise je suis sous visual 2005 C++.
j'essaye de trouver comment ajouter des lignes dans ma listbox j'ai mis ceci:

CString str;
char**serv = opc->liste_serveur(nb_serv); //nb_serv serveurs a récupérés
    for (int i=0; i <nb_serv; i++)  //Ajout des serveurs dans la listbox
        {
            str.Format(_T("item string %d"), i);
            m_ctlMessage.AddString(str);
            m_ctlMessage.AddString((LPCTSTR)serv[i]);
        }
pour le premier ajout --> pas de probleme.
pour le second ajout--> Il mécrit des hyeroglyphes.

je pense que cela vient du type utilisé char** mon tableau qui récupére les noms des serveurs OPC.
j'ai donc essayer un cast mais ca ne passe pas!
mais je en sais aps comment resoudre ca!
merci d'avance pour votre aide!

 

4 réponses

Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
Bon j'ai finalement réussi a trouver mes 2 solutions donc je viens les poster au cas ou un jour ca puisse aider quelqu'un:

en gros pour passer de char* ->CString
    il suffit de faire un cast : (CString)serv

CString ->char*
    CString ipServer;
    char* strServer = ipServer.GetBuffer(ipServer.GetLength());
    ipServer.ReleaseBuffer(-1);

voila tout !

 
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
dans le mme genre tant que jy suis :

    CString serveur ;
    int nIndex = m_ctlMessage.GetCurSel(); 
    m_ctlMessage.GetText( nIndex,serveur ); //récupération du nom de serveur choisi
//    m_ctlMessage.MessageBox(str);
    opc->connexion(serveur); //connexion

et la fonction connexion accepte un char*
j'ai essayer un c_str()
mais erreur  : impossible de convertir de CString en char*
:s

 
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
Pour mon deuxiéme probleme j'ai testé cela:
    // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle
    CString serveur ;
    int nIndex = m_ctlMessage.GetCurSel(); 
    m_ctlMessage.GetText( nIndex,serveur ); //récupération du nom de serveur choisi
//    m_ctlMessage.MessageBox(str);
    char* str = serveur.GetBuffer(serveur.GetLength());
    opc->connexion(str); //connexion
    //if(opc->etat())  //si connecté
    //{
    //EnableOPCNotification(opc->get_serv(),(NOTIFYPROCAPI)OPCUpdateCallback); //active la notification de MAJ des items
    //}
    serveur.ReleaseBuffer(-1);

mais il me dit :
error C2440: 'initialisation' : impossible de convertir de 'wchar_t *' en 'char *'

 
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
pour mon premier probleme j'ai simplementy caster a CString et non plus LPCTSTR et ca marche !!!
cool
reste plus qu'a réussir le sens inverse!!!