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

Discussion :

Conversion QString en LPCTSTR

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut Conversion QString en LPCTSTR
    Bonjour!

    J'ai quelques soucis de conversion de chaines de caractères (je reprends le C++/QT apres plusieurs années de PHP , donc les types de variables ...)

    J'utilise une fonction qui accepte en paramètre un LPCTSTR.

    J'ai essayé de m'inspirer de ceci sans succes --> http://www.developpez.net/forums/d52...tring-wchar_t/
    J'ai donc collé le code source le plus 'simple' possible pour que vous puissiez comprendre ce que je cherche a faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ...
    QString driveLetter;
    driveLetter=destinationFolder.left(x);	
    CHardDiskManager manager;
    std::wstring drive = driveLetter.toStdWString () ;
    //La fonction CheckFreeSpace demande un LPCTSTR en argument
    manager.CheckFreeSpace(drive.c_str());
    ...
    Lors de la compilation, j'ai l'erreur 'unresolved external'
    j'ai deja essayé les fonctions de la classe QString comme toStdString, toStdWstring , je n'arrive pas a compiler correctement


    Cela vient peut etre d'un mauvais paramétrage de mon IDE ou des paramètres de mon projet
    Il y aurait t' il quelqu'un pour m'eclairer sur le sujet ( ou a defaut me proposer une méthode - compatible windows - pour recuperer l'espace disponible sur un lecteur )
    Je précise que je travaille sous Windows XP, Visual Studio 2008 et QT 4.4.3 et mon projet est compilé en Unicode
    Je vous remercie d'avance

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut et bienvenue sur le forum.

    LPCTSTR est soit un char_t * soit un wchar_t *. Tout dépend des options de compilation. Le code que tu montre est (je pense) correcte quand LPCTSTR est un wchar_t *

    Citation Envoyé par crinos972 Voir le message
    Lors de la compilation, j'ai l'erreur 'unresolved external'
    j'ai deja essayé les fonctions de la classe QString comme toStdString, toStdWstring , je n'arrive pas a compiler correctement
    tu peut mettre les erreur de compile que tu as? avec quoi compile tu?

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut
    Je compile avec Visual Studio 2008 et QT 4.4.3

    Voici les erreurs que j'obtiens a la compilation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    Generating Code...
    Linking...
    playlist.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __thiscall QString::toStdWString(void)const " (__imp_?toStdWString@QString@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@XZ) referenced in function "private: void __thiscall playlist::checkFreeSpace(void)" (?checkFreeSpace@playlist@@AAEXXZ)
    D:\Mes Documents\Visual Studio 2008\Projects\playlist\Debug\playlist.exe : fatal error LNK1120: 1 unresolved externals
    playlist - 2 error(s), 0 warning(s)
    J'ai voulu voir ce que donnait le code en remplacant les wstring par des string
    j'obtiens ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    .\playlist.cpp(293) : error C2664: 'CHardDiskManager::CheckFreeSpace' : cannot convert parameter 1 from 'const char *' to 'LPCTSTR'
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    J'ai les memes erreurs que je definisse le projet en Unicode ou Multi Bytes

    Je ne sais pas si ca peut aider ...

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Tu as un problème de link. Tu es sur d'avoir ajouter les lib de Qt??
    comment créé tu ton projet?

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut
    J' ai un plugin qui s'occupe de l'integration de QT a visual studio et c'est celui ci qui crée mon projet, je rajoute ensuite les headers necessaires

    Je vais verifer les librairies et je te tiens au courant.

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Par défaut
    j'ai finalement pu trouver une solution a mon problème en utilisant des wchar_t * et cee code trouvé sur MSDN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    string str="bla bla bla";
    const char *orig = str.c_str();
     
    // Convert to a wchar_t*
    size_t origsize = strlen(orig) + 1;
    const size_t newsize = 100;
    size_t convertedChars = 0;
    wchar_t wcstring[newsize];
    mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE);
    Merci d'avoir pris le temps de me répondre

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

Discussions similaires

  1. Problème de conversion 'QString *' en 'QChar'
    Par karnivor dans le forum Débuter
    Réponses: 13
    Dernier message: 03/12/2012, 19h08
  2. Conversion QString -> QByteArray (encodage)
    Par pasqual dans le forum Qt
    Réponses: 4
    Dernier message: 02/03/2010, 14h23
  3. Conversion Qstring en type utilisateur
    Par L-F-an dans le forum Qt
    Réponses: 2
    Dernier message: 16/12/2009, 14h49
  4. Conversion QString en char*
    Par Stage2006 dans le forum Qt
    Réponses: 5
    Dernier message: 12/06/2007, 17h14
  5. conversion en QString
    Par transistor49 dans le forum C++
    Réponses: 5
    Dernier message: 08/03/2005, 13h52

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