Précédent   Forum du club des développeurs et IT Pro > C et C++ > Outils pour C & C++ > Visual C++ > C++/CLI
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/08/2012, 14h46   #1
vin100H
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 74
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 74
Points : 13
Points : 13
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 :
wchar_t* wtxt = L"test";
je souhaiterais y envoyer la valeur tapée dans un textbox
Code :
this->tbLog->Text->ToString();
, mais je ne sais trop comment le faire, je tombe toujours sur des problème de type
Code :
 cannot convert from 'System::String ^' to 'wchar_t *'
vin100H est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 14h58   #2
Hibernatus34
Membre émérite
 
Inscription : août 2010
Messages : 529
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 529
Points : 992
Points : 992
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 :
pin_ptr<const wchar_t> wch = PtrToStringChars(orig);
Hibernatus34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 16h28   #3
vin100H
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 74
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 74
Points : 13
Points : 13
J'ai trouvé ceci.

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

mais ...

Code :
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 :
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
vin100H est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2012, 11h56   #4
vin100H
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 74
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 74
Points : 13
Points : 13
Personne ne sait comment faire ?

Celà me parait pourtant assez Banal comme truc, mais ..... ????
vin100H est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2012, 12h11   #5
vin100H
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 74
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 74
Points : 13
Points : 13
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 :
1
2
wchar_t wtxt = System::Convert::ToChar(tbParam->Text->ToString());
wchar_t* res = fsbHelloParam(&wtxt);
vin100H est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2012, 20h39   #6
moldavi
Membre Expert
 
Homme david
Responsable développement
Inscription : décembre 2003
Messages : 1 289
Détails du profil
Informations personnelles :
Nom : Homme david
Âge : 38
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Responsable développement
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2003
Messages : 1 289
Points : 2 129
Points : 2 129
Bonjour.

Code :
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é.
__________________
Media Foundation video decoder mpeg1/mpeg2, MediaSource Kinect
http://sourceforge.net/projects/mfnode/

http://jeux.developpez.com/faq/directx/?page=dshow
moldavi est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2012, 15h20   #7
vin100H
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 74
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 74
Points : 13
Points : 13
Citation:
Envoyé par moldavi Voir le message
Bonjour.

Code :
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.
vin100H est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 00h36.


 
 
 
 
Partenaires

Hébergement Web