Une conversion bien utile, mais dont je n'ai pas encore la solution ...

m0rph3us002
Messages postés
26
Date d'inscription
vendredi 27 février 2004
Statut
Membre
Dernière intervention
21 septembre 2007
- 16 juin 2004 à 02:32
m0rph3us002
Messages postés
26
Date d'inscription
vendredi 27 février 2004
Statut
Membre
Dernière intervention
21 septembre 2007
- 16 juin 2004 à 12:31
Salut salut!
bon voilà, j'ai des petits soucis de conversion en ce moment qui m'empêche d'avancer dans mon projet... :sad)
en fait j'ai une petite fonction qui prend en paramètre deux char* mais ces deux variables je voudrais y mettre le texte de l'une de mes textBox (j'utilise visual c++ .net 2003, projets managés, windows forms)

mon problème se résume donc à la conversion :
System::String __gc * -> char *

(bien sûr le sens inverse pourrait m'intéresser ainsi que beaucoup d'autre internautes)

merci de l'aide que l'on pourra m'apporter!

3 réponses

cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
16 juin 2004 à 07:15
Tu as essayé de faire un cast :

(char*) NOM_DE_LA_VARIABLE ?

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
m0rph3us002
Messages postés
26
Date d'inscription
vendredi 27 février 2004
Statut
Membre
Dernière intervention
21 septembre 2007

16 juin 2004 à 10:45
c'était pas bête, mais j'y avais déjà pensé et non malheureusement ce n'est apparemment pas aussi facile ...

voici le message d'erreur après la compilation :

error C2664: 'creer_file' : impossible de convertir le paramètre 1 de 'System::String __gc *' en 'char *'
Impossible de convertir un type managé en type non managé

(la fonction creer_file prend deux paramètres qui sont des char*)
0
m0rph3us002
Messages postés
26
Date d'inscription
vendredi 27 février 2004
Statut
Membre
Dernière intervention
21 septembre 2007

16 juin 2004 à 12:31
je viens de trouver la solution sur le site MSDN :

using namespace System::Runtime::InteropServices;

char* str1 = (char*)(void*)Marshal::StringToHGlobalAnsi(txtDepart->Text);
Marshal::FreeHGlobal(str1);

voilà pour ceux que ça peut interesser, ça fonctionne très bien dans mon cas, et voilà le lien pour les autres possibilités :

http://support.microsoft.com/default.aspx?scid=kb;EN-US;311259
0