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

  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

  7. #7
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 525
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 525
    Par défaut
    >>J'utilise une fonction qui accepte en paramètre un LPCTSTR.

    Oui mais ton code ne sera plus portable.
    Quel intérêt d'utiliser Qt ? Ce ne serait pas mieux de prendre MFC par exemple ?
    //La fonction CheckFreeSpace demande un LPCTSTR en argument
    Qt ne propose pas une classe+méthode équivalente ?
    Je ne sais pas par exemple une classe QtDrive et QtDrive::GetFreeSpace() ?

  8. #8
    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
    Malheureusement, jusqu'à maintenant, QT ne propose rien de ce type et d'après ce que j'avais pu voir sur un forum de trolltech, il n'est pas prévu non plus de l'implémenter.

    Donc, pour le moment , la méthode de calcul de l'espace disponible sera différente selon la plateforme de compilation.

+ 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