Addstring probleme de type (LPCTSTR)

Résolu
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 16 avril 2007 à 13:38
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 18 avril 2007 à 09:27
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

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
18 avril 2007 à 09:27
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 !

 
3
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
16 avril 2007 à 15:02
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

 
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
16 avril 2007 à 15:13
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 *'

 
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
16 avril 2007 à 15:15
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!!!
 
0
Rejoignez-nous