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 :

Problem entres System::string et char*


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    39
    D�tails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 39
    Par d�faut Problem entres System::string et char*
    Salut,

    Alors voici mon probl�me j'utilise une OpenFileDialog (Parcourir)pour permette a l'utilisateur de choisir un fichier. Je r�cup�r� le patch du fichier dans:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
                   System::String^ Patch;
     
                    Parcourire->ShowDialog();
    		Patch = Parcourire->FileName; 
    		textBox1->Text =Patch;
    Le chemin complet s�affiche bien dans mon textbox mais pour la suite du programme jais besoin d'utiliser le patch du fichier via un char * seulement impossible de convertir ce System::String en char* et le code suivant ne fonctionne pas car il n'ouvre jamais le bon fichier (jais l�impression que la variable Patchchar contient n�importe quoi.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    //Conversion du System::string en char *  pour le fopen
    		pin_ptr<const wchar_t> wch = PtrToStringChars(Patch);
    		size_t convertedChars = 0;
    		size_t  sizeInBytes = ((Patch->Length + 1) * 2);
    		errno_t err = 0;
    		Patchchar = (char *)malloc(sizeInBytes);
    Merci d'avance

  2. #2
    Membre �m�rite Avatar de valefor
    Profil pro
    Inscrit en
    D�cembre 2006
    Messages
    711
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2006
    Messages : 711
    Par d�faut
    il n'y a pas une methode c_str() ? Tu ferais Patch.c_str() ...

  3. #3
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    39
    D�tails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 39
    Par d�faut
    �Merci pour la r�ponse mais avec patchchar=Patch.c_str(); j'obtient l'erreure suivante :

    la partie gauche de '.c_str' doit avoir un class/struct/union
    ps: je travaille sur une version expresse 2010 donc pas d'Intellisense

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Citation Envoy� par Farow Voir le message
    Petit coquin, tu ne serais pas en train de nous faire du C++ manag� ? Je ne sais pas comment fonctionne ce type de r�f�rence (d�clar� avec un ^ apr�s le type), donc je ne peux pas t'aider, mais je dirais que tu devrais essayer Patch -> c_str() au lieu de Patch.c_str().

  5. #5
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    39
    D�tails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 39
    Par d�faut
    Du C++ manag� ? c'est quoi exactement j'utilise Visual studio et la boite � outils.

    En gros je veut que l'utilisateur choisisse un fichier �quivalent a un fichier texte et mon programme ajoute du texte a l�int�rieure du fichier avec un fopen et un fwrite.

    Seulement le probl�me est que pour r�cup�r� le chemin avec un Openfailedialog jais besoin d'une String^ sinon j'obtient :

    String'*: impossible d'utiliser ce type ici sans '^' de niveau sup�rieur
    Et que fopen/fwrite a besoin du chemin dans un char*. Sinon tu connait une m�thode peut-�tre plus simple pour ouvrir et ins�r� du texte dans un fichier de type txt avec une s�lection via Openfailedialog. ?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Citation Envoy� par Farow Voir le message
    Du C++ manag� ? c'est quoi exactement j'utilise Visual studio et la boite � outils.
    Le diable m'emporte si je sais exactement ce que c'est. C'est une sorte d'extension du langage C++ par Microsoft.

    En revanche, ce dont je suis certain, c'est que String^ n'est pas un type C++ mais une r�f�rence en C++ manag�, et �a implique beaucoup de choses que visiblement tu ne ma�trises pas (ni moi non plus d'ailleurs).

    Il faut chercher une mani�re de faire en C++ pur. Regarde cet exemple.

    Edit : le C++ manag�, c'est �a.

  7. #7
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    39
    D�tails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 39
    Par d�faut
    Citation Envoy� par jblecanard Voir le message
    Le diable m'emporte si je sais exactement ce que c'est. C'est une sorte d'extension du langage C++ par Microsoft.

    En revanche, ce dont je suis certain, c'est que String^ n'est pas un type C++ mais une r�f�rence en C++ manag�, et �a implique beaucoup de choses que visiblement tu ne ma�trises pas (ni moi non plus d'ailleurs).

    Il faut chercher une mani�re de faire en C++ pur. Regarde cet exemple.

    Edit : le C++ manag�, c'est �a.
    AAAAAAAAhhhhhhh merci effectivement je suis en C++/CLI je pense que je me suis tromper dans le type de projet au d�but j'ais pris Application Windows form. Je pense que c'est Projet Win32 qu'il faut choisir non?? Cela va r�soudre mon probl�me si je recommence avec le bon type de projet � votre avis ??

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Citation Envoy� par Farow Voir le message
    Je pense que c'est Projet Win32 qu'il faut choisir non?? Cela va r�soudre mon probl�me si je recommence avec le bon type de projet � votre avis ??
    R�soudre ton probl�me, n'exag�rons pas, mais en tout cas, �a va t'aider � repartir sur les bonnes bases oui, �a c'est s�r

    Ca ne r�soudra pas directement l'erreur puisque les handlers (type suivi d'un ^) n'existent pas en C++. Tu peux essayer mon exemple par contre.

  9. #9
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    39
    D�tails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 39
    Par d�faut
    Heu je vien de me dire que le probl�me vien peut-�tre du namespace je travaille dans From.h et dans :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
    {
    ..............
    }
    Avec ce code en haut de la page :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    namespace GPs_edit_pos {
     
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    Bref si quelqun a une idee j'avou etre un peut perdue la je suis d�veloppeur PHP/javascript alors le C++ c'est un peut l�inconnue pour moi xD

    Merci

Discussions similaires

  1. Conversion System::String ^ en char *
    Par betedesvosges dans le forum C++/CLI
    R�ponses: 2
    Dernier message: 27/05/2015, 17h50
  2. R�ponses: 1
    Dernier message: 16/03/2007, 15h28
  3. convertir un System::String* en char *
    Par poporiding dans le forum C++
    R�ponses: 4
    Dernier message: 26/07/2006, 17h01
  4. R�ponses: 3
    Dernier message: 14/06/2006, 10h06
  5. R�ponses: 12
    Dernier message: 31/01/2006, 21h46

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