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++/CLI Discussion :

WriteEventLogEntry - Conversion String ^ en PWSTR


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 84
    Par d�faut WriteEventLogEntry - Conversion String ^ en PWSTR
    Bonjour,

    Je souhaite loger des actions dans le journal de Windows avec WriteEventLogEntry.
    Comment convertir mon message qui est une variable de type String ^ en PWSTR ?

    Merci d'avance

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    String ^ myMessage;
    myMessage = "ERREUR ETAPE 1";
    WriteEventLogEntry(myMessage, EVENTLOG_INFORMATION_TYPE);
    Erreur 6 error C2664: impossible de convertir le param�tre 1 de 'System::String ^' en 'PWSTR'

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    PtrToStringChars() devrait te donner un pin_ptr<wchar_t> implicitement convertible en LPCWSTR, quelle que soit ta version de Visual Studio.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 84
    Par d�faut
    Merci !

    Mais j'ai toujours le soucis :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    String ^ message = "test" ;
    WriteEventLogEntry(PtrToStringChars(message), EVENTLOG_INFORMATION_TYPE);
    me donne toujours impossible de convertir le param�tre 1 de 'cli::interior_ptr<Type>' en 'PWSTR'

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ah, je m'�tais donc tromp�, il donne un interior_ptr<>, il faut donc explicitement passer par un pin_ptr<>.

    Essaie ceci:
    Code C++/CLI : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    String ^ message = "test" ;
    { //pour de bonnes perfs, un pin_ptr doit avoir une durée de vie la plus courte possible
    	pin_ptr<wchar_t> pinW(( PtrToStringChars(message) ));
    	WriteEventLogEntry(pinW, EVENTLOG_INFORMATION_TYPE);
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 84
    Par d�faut
    Merci, mais toujours le message : Erreur 6 error C2440: 'initialisation'*: impossible de convertir de 'cli::interior_ptr<Type>' en 'cli::pin_ptr<Type>'

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Alors cette fois-ci, je fais vraiment de la recherche plut�t que bosser de m�moire, parce que de m�moire, c'�tait cens� marcher.

    Et en regardant dans du code � moi, je tombe sur ceci:
    Code C++/CLI : S�lectionner tout - Visualiser dans une fen�tre � part
    	pin_ptr< const wchar_t > pinNameW = PtrToStringChars(name);
    Ce qui veut donc dire que �a ne marche qu'en const.

    Essaie de corriger le code de WriteEventLogEntry() pour accepter un pointeur const (LPCWSTR), car je suis 100% certain que cette fonction n'est pas cens�e modifier la cha�ne re�ue en param�tre.
    ...Ou au pire, utilise un const_cast<> :aie:
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. conversion string--> blob
    Par zimzoum10 dans le forum D�buter
    R�ponses: 13
    Dernier message: 23/02/2005, 16h41
  2. [Conversion] String en InputStream
    Par canou94 dans le forum Langage
    R�ponses: 5
    Dernier message: 22/02/2005, 15h04
  3. [CONVERSION] String -> HEXADECIMAL ...
    Par tripop dans le forum Langage
    R�ponses: 9
    Dernier message: 13/01/2005, 09h42
  4. conversion String en Date (parse trop permissif)
    Par ciloulou dans le forum Collection et Stream
    R�ponses: 2
    Dernier message: 13/09/2004, 18h36
  5. [FLASH MX 2004] conversion string en int.
    Par calfater dans le forum Flash
    R�ponses: 3
    Dernier message: 26/05/2004, 15h00

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