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 :

Envoyer le contenue d'un TextBox dans un wchar_t*


Sujet :

C++/CLI

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut Envoyer le contenue d'un TextBox dans un wchar_t*
    Bonjour,

    J'ai un wchar_t* que je peut "hardcoder" comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wchar_t* wtxt = L"test";
    je souhaiterais y envoyer la valeur tapée dans un textbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this->tbLog->Text->ToString();
    , mais je ne sais trop comment le faire, je tombe toujours sur des problème de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     cannot convert from 'System::String ^' to 'wchar_t *'

  2. #2
    Membre expérimenté
    Inscrit en
    Août 2010
    Messages
    726
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 726
    Points : 1 645
    Points
    1 645
    Par défaut
    Un wchar_t* ne contient pas une chaîne, ça contient juste une adresse.
    Tu ne veux pas copier le contenu d'une String vers un wchar_t*, au pire tu veux récupérer un wchar_t* temporaire pour transférer ta chaîne à une fonction que ne peut pas lire une String.
    La réponse est surement là :
    http://msdn.microsoft.com/en-us/libr...=vs.80%29.aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pin_ptr<const wchar_t> wch = PtrToStringChars(orig);

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut
    J'ai trouvé ceci.

    http://msdn.microsoft.com/fr-fr/libr...56(VS.90).aspx

    mais ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error	3	error C4996: 'msclr::interop::error_reporting_helper<_To_Type,_From_Type>::marshal_as': This conversion is not supported by the library or the header file needed for this conversion is not included.  Please refer to the documentation on 'How to: Extend the Marshaling Library' for adding your own marshaling method.
    pourtant j'ai bien ajouté les fichier demandé dans les header,
    et je pense faire ce qui est indiqué dans l'aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    					wchar_t* wtxt;
     
    					marshal_context^ context = gcnew marshal_context();
    					String^ TextBoxValue = gcnew String(this->tbLog->Text->ToString());
    					wtxt = context->marshal_as<wchar_t*>( TextBoxValue );
    					delete context;

    et en regardant ici
    http://msdn.microsoft.com/fr-fr/libr...65(VS.90).aspx

    celà semble bien être supporté vu qu'il est dans la liste

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut
    Personne ne sait comment faire ?

    Celà me parait pourtant assez Banal comme truc, mais ..... ????

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut
    J'ai trouvé ceci ... qui fonctionne à condition que ma textbox n'aie qu'une seul caractère.

    je cherche à faire la même chose, mais en ayant un nombre de caractère multiple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wchar_t wtxt = System::Convert::ToChar(tbParam->Text->ToString());
    wchar_t* res = fsbHelloParam(&wtxt);

  6. #6
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    wchar_t* wtxt = nullptr;
    String^ szTest = textBox1->Text;
     
    IntPtr p =  System::Runtime::InteropServices::Marshal::StringToHGlobalUni(szTest);
     
    wtxt = static_cast<wchar_t*>(static_cast<void *>(p));
    System::Runtime::InteropServices::Marshal::FreeHGlobal(p);
    Ici :

    http://dotnet.developpez.com/faq/cpp...#stringtowchar

    Attention, lors de l'appel à "FreeHGlobal", "wtxt" ne contient plus la valeur. Il faut juste pense à libérer la mémoire lorsque "wtxt" n'est plus utilisé.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 74
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par moldavi Voir le message
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    wchar_t* wtxt = nullptr;
    String^ szTest = textBox1->Text;
     
    IntPtr p =  System::Runtime::InteropServices::Marshal::StringToHGlobalUni(szTest);
     
    wtxt = static_cast<wchar_t*>(static_cast<void *>(p));
    System::Runtime::InteropServices::Marshal::FreeHGlobal(p);
    Ici :

    http://dotnet.developpez.com/faq/cpp...#stringtowchar

    Attention, lors de l'appel à "FreeHGlobal", "wtxt" ne contient plus la valeur. Il faut juste pense à libérer la mémoire lorsque "wtxt" n'est plus utilisé.
    Merci, ... entre-temps j avais trouvé exactement la même chose que ce que tu me dit.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/09/2011, 15h24
  2. Envoyer le contenu d'un fichier dans le navigateur
    Par Bruno2000 dans le forum Langage
    Réponses: 1
    Dernier message: 29/02/2008, 20h47
  3. Réponses: 2
    Dernier message: 02/11/2007, 18h12
  4. [C#] ecrire le contenu d'une TextBox dans un fichier XML
    Par LaseLiep dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/09/2006, 12h51
  5. Réponses: 1
    Dernier message: 09/06/2006, 12h04

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