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 :

Typage des donn�es avec visual Studio 2010


Sujet :

C++/CLI

  1. #1
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut Typage des donn�es avec visual Studio 2010
    bonjour
    Je n'arrive pas � compiler le type string
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    public ref class OpenAFile : public System::Windows::Forms::Form
    	{
    	private: 
    	    System::Windows::Forms::Button^  button3;
    		Form^ form1;
    	public:
    		std::string sFileToOpen;
    Je suis en mode manag� mais la documentation me dit que j'ai le droit de faire cohabiter du code manag� et du code natif. Le compilateur n'a pas la m�me interpr�tation:
    je vous joins le r�sultat de compilation
    OpenAFile.h(7): error C4368: impossible de d�finir 'sFileToOpen' comme membre de 'Test6::OpenAFile' manag�*: les types mixtes ne sont pas pris en charge
    ce serait d'avoir un module qui accepte le type string

  2. #2
    Membre extr�mement actif

    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 408
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 408
    Par d�faut
    bonsoir,

    et inclure le header ad�quate?

  3. #3
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut #include <string.h>
    ou mieux
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    #include <stdio.h>
    #include <string>
    Bien sur
    en fait il faut d�clare les objets comme des objets globales
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    std::string sFileToOpen;
    std::string sPathOfTheFile;
    std::string sDiskOfTheFile;
    namespace Test6 {
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace System::IO;
        /// <summary>
    	/// Description résumée de OpenAFile
    	/// </summary>
    	public ref class OpenAFile : public System::Windows::Forms::Form
    	{
    	private: 
    		Form^ form1;
    	public:
     
    		OpenAFile::OpenAFile(void);
    		OpenAFile::OpenAFile(Form^ form1);
    		OpenAFile::~OpenAFile();
     
    		void Test6::OpenAFile::InitializeComponent(void);

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 507
    Par d�faut
    NON.

    Il ne faut pas m�langer les torchons et les serviettes.

    Dans des classes manag�es, vous ne devez utiliser que des classes manag�es.

    .NET dispose de la classe System::String, bien plus sympa que la classe std::string.

  5. #5
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut string ou String
    Les deux sont effectivement possible. J'ai opt� pour la seconde. Ce choix est provisoire, je prendrai � ce sujet une d�cision pour le projet d�finitif. Pour l'instant je dois d'abord faire marcher la maquette.

  6. #6
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 507
    Par d�faut
    Votre choix n'est pas une option, c'est un cul de sac.
    Faites-moi confiances.

    Il ne faut pas m�langer le monde manag� et natif.
    Le code interm�diaire entre ces mondes est complexe et il est inutile de complexifier votre maquette pour rien.

    Revenez sur votre choix.
    Il suffira de supprimer vos std::string une par une et de remplacer le code en erreur indiqu� par le compilateur par le nom du membre static de la classe.
    Il n'y a aucun refactoring � faire, juste du copier-coller de nom de membre.
    Cela devrait prendre 1 minute par variable, au grand maximum, pour un projet de la taille d'une maquette.

    C'est simple, rapide et cela vous �pargnera bien des d�sagr�ments.

  7. #7
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut Je confirme ma position
    Comme je l'ai dit ailleurs j'ai une application de 50 000 lignes de code � migrer sous Visual Studio. Ce code est �crit en C++ natif.
    Pour passer sous Visual Studio C++, je me suis mis au C++/CLI, ok et au sein de la classe, je n'ai pas de probl�me � utiliser les type System::String. Cependant pour passer � l'application je dois repasser en std::wstring pour �tre compatible avec le code existant. il y a deux probl�mes: convertir les System::String en wchar_t* et affecter les variables locales. le premier est r�solu par le code ci apr�s
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
                    wsLocalString = openFileDialog2->FileName;
    		using namespace Runtime::InteropServices;
                    const wchar_t* chars = (const wchar_t*)(Marshal::StringToHGlobalUni( wsLocalString)).ToPointer();
                    .
                    .// affecter la variable  finale avec le resultat acquit dans chars.
                    .// et libérer les ressources
                    Marshal::FreeHGlobal(IntPtr((void*)chars));
    il reste que l'acc�s des variables globales de type std::wstring n'est pas trivial; actuellement je n'ai pas de solution qui marche.

  8. #8
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 507
    Par d�faut
    Globale ou pas, le m�canisme de Marshaling des string entre le code manag� et natif est le m�me.

  9. #9
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut Re-bonjour
    la fen�tre de m�moire n'est toujours pas ouverte. Quoi qu'il en soit on est maintenant dans le domaine de l'emploi du debugger. Je clos donc cette discussion

  10. #10
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 507

  11. #11
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Citation Envoy� par JeanNoel53 Voir le message
    une application de 50 000 lignes de code � migrer sous Visual Studio. Ce code est �crit en C++ natif.
    Pour passer sous Visual Studio C++, je me suis mis au C++/CLI
    Je ne vois pas le rapport.
    Visual Studio supporte tr�s bien et est adapt� � faire du C++ "classique".
    En tous cas le CLI n'est pas du tout obligatoire pour convertir en projet Visual Studio son application.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 0
    Dernier message: 10/02/2015, 17h46
  2. Faire des tests unitaires avec Visual Studio 2010
    Par Francis Walter dans le forum Visual Studio
    R�ponses: 4
    Dernier message: 30/10/2014, 13h53
  3. typage des string avec Visual Studio 2010 et C++/CLI
    Par JeanNoel53 dans le forum C++/CLI
    R�ponses: 11
    Dernier message: 07/05/2012, 14h00
  4. R�ponses: 0
    Dernier message: 22/11/2011, 11h38

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