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

C++ Discussion :

Erreur conversion Createprocess


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 38
    Par défaut Erreur conversion Createprocess
    Bonjour,

    Je travaille sous visual studio 2005 sur xp.
    L'exécution de la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateProcess(NULL,"c:\\windows\\notepad.exe C:\\Documents and Settings\\asis\\Bureau\\[Sauvegarde_trace]Tue_May_18_16'48'32_2010.csv",0,0,FALSE, CREATE_DEFAULT_ERROR_MODE,0,0,     &siStartupInfo,&piProcessInfo)
    provoque l'erreur suivante:
    error C2664: 'CreateProcessW' : cannot convert parameter 2 from 'const char [41]' to 'LPWSTR'
    Il s'agit d'un exemple présent dans la faq (http://cpp.developpez.com/faq/vc/?pa...ead#ProcessNew)

    Merci de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Ça ressemble à un problème classique d'Unicode : la fonction attend le type LPTSTR qui peut être un char* classique ou un wchar_t* selon ce que tu as défini comme option pour la compilation.

    Une macro permet de passer en wchar_t*, c'est L"le texte à transformer".

    Donc soit tu modifies tes options de projet, soit tu écris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateProcess(NULL,L"c:\\windows\\notepad.exe C:\\Documents and Settings\\asis\\Bureau\\[Sauvegarde_trace]Tue_May_18_16'48'32_2010.csv",0,0,FALSE, CREATE_DEFAULT_ERROR_MODE,0,0,     &siStartupInfo,&piProcessInfo)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 38
    Par défaut
    , Merci de ton aide.

  4. #4
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Citation Envoyé par ElGat0 Voir le message
    Ça ressemble à un problème classique d'Unicode : la fonction attend le type LPTSTR qui peut être un char* classique ou un wchar_t* selon ce que tu as défini comme option pour la compilation.

    Une macro permet de passer en wchar_t*, c'est L"le texte à transformer".

    Donc soit tu modifies tes options de projet, soit tu écris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateProcess(NULL,L"c:\\windows\\notepad.exe C:\\Documents and Settings\\asis\\Bureau\\[Sauvegarde_trace]Tue_May_18_16'48'32_2010.csv",0,0,FALSE, CREATE_DEFAULT_ERROR_MODE,0,0,     &siStartupInfo,&piProcessInfo)
    La macro, ce n'est pas L mais _T(). L indique au compilateur qu'il s'agit d'une chaîne de wchar_t et non de char.

    Donc, tu dois plutôt écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateProcess(NULL,_T("c:\\windows\\notepad.exe C:\\Documents and Settings\\asis\\Bureau\\[Sauvegarde_trace]Tue_May_18_16'48'32_2010.csv"),0,0,FALSE, CREATE_DEFAULT_ERROR_MODE,0,0,     &siStartupInfo,&piProcessInfo)
    Sinon, ça compilera bien en unicode, mais plus en ascii. L'autre solution, c'est de toujours utiliser la version unicode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateProcessW(NULL,L"c:\\windows\\notepad.exe C:\\Documents and Settings\\asis\\Bureau\\[Sauvegarde_trace]Tue_May_18_16'48'32_2010.csv",0,0,FALSE, CREATE_DEFAULT_ERROR_MODE,0,0,     &siStartupInfo,&piProcessInfo)

Discussions similaires

  1. SQL SERVER/DELPHI Erreur Conversion CHAR DATETIME
    Par Macadoshis dans le forum Bases de données
    Réponses: 7
    Dernier message: 13/06/2008, 12h52
  2. erreur conversion type de données 3421
    Par sunwind dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/05/2008, 16h27
  3. Erreur conversion valeur datetime à partir chaîne de caractères
    Par goullater dans le forum Développement
    Réponses: 1
    Dernier message: 16/04/2008, 14h55
  4. Erreur conversion de type - import fichier excel
    Par Greg84 dans le forum Access
    Réponses: 2
    Dernier message: 16/08/2006, 16h32
  5. [VB.NET] Erreur conversion de code c=>vb (opendialogfile)
    Par hirochirak dans le forum Windows Forms
    Réponses: 19
    Dernier message: 02/06/2004, 16h31

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