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

Visual C++ Discussion :

Comportement du compilateur VisualStudio incomprehenible


Sujet :

Visual C++

  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 Comportement du compilateur VisualStudio incomprehenible
    bonjour
    je repends en ce moment un projet qui �tait fait en C++ Builder pour le migrer sous Visual Studio 10.
    Je butte actuellement sur des comportements du compilateur que je ne comprends pas. J'ai mis en commentaire les sources d'information utilis�es pour le codage. Elle concerne la s�quence de code ci dessous:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
              System::String^ VirtualPath;
    	  array<wchar_t>^ VirtualBuffer;
    	  size_t len;
    	  len = wcslen( (wchar_t*)wsDatabaseName.c_str());
    	  VirtualPath = gcnew System::String;
    	  VirtualBuffer = gcnew array<wchar_t, (int) 1>;
    	  // le prototype décit dans msdn library: public: static void Copy( IntPtr source,  array<wchar_t>^ destination, int startIndex, int length);
    	  // la description de la fonction dans msdn library: Copie des données d'un pointeur mémoire non managé dans un tableau de caractères managé.
    	  // suggestion du compilateur Marshal::Copy(cli::array<Type,dimension> ^,int,System::IntPtr,int) 
    	  Marshal::Copy( VirtualBuffer, (Int32)0, (System::IntPtr)wsDatabaseName.c_str(), (Int32)len);
    	  VirtualPath = (System::String^)VirtualBuffer;
    les erreurs portent sur les instructions gcnew et sur le Copy
    ci apr�s les messages d'erreur:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(355): error C2512: 'System::String::String'*: aucun constructeur par défaut approprié disponible
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(356): error C2748: La création de tableau managé doit posséder une taille de tableau ou un initialiseur de tableau
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(360): error C2440: 'cast de type'*: impossible de convertir de 'const wchar_t *' en 'System::IntPtr'
    1>          Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(361): error C2440: 'cast de type'*: impossible de convertir de 'cli::array<Type> ^' en 'System::String ^'
    1>          with
    1>          [
    1>              Type=wchar_t
    1>          ]
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(475): error C2059: erreur de syntaxe*: ';'
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(516): warning C4244: 'argument'*: conversion de 'long' en 'short', perte possible de données
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(534): warning C4244: 'argument'*: conversion de 'long' en 'short', perte possible de données
    1>
    La premi�re est r�p�titive si je fais un gcnew avec comme type la String il me met syst�matiquement qu'il ne connait pas la System::String::String
    le deuxi�me est une interpr�tation de l'aide de Microsoft http://msdn.microsoft.com/fr-fr/library/ms146632 il me dit que l'array doit donner un type avec sa taille, selon les compilation il ajoute que la taille est comprise entre 1 et 32
    le troisi�me message met en cause la syntaxe de la Copy qui est d�fini dans http://msdn.microsoft.com/fr-fr/library/ms146637
    qui peut me donner les syntaxes accept�es par le compilateur

  2. #2
    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 La solution
    elle est simple.elle est donn� par ce lien http://msdn.microsoft.com/fr-fr/library/ms235219.aspx et s'�crit:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
              System::String^ VirtualPath;
    	  VirtualPath = gcnew String(wsDatabaseName.c_str());
    	  if( File::Exists( VirtualPath) == true)

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

Discussions similaires

  1. Comportement de makefile diff�rent selon le compilateur choisi !
    Par nonobus dans le forum Autres �diteurs
    R�ponses: 1
    Dernier message: 04/06/2014, 11h46
  2. Comportement �trange de VisualStudio
    Par ram-0000 dans le forum Visual C++
    R�ponses: 1
    Dernier message: 11/01/2011, 13h31
  3. Comportement du compilateur mode optimis�
    Par reptils dans le forum C++
    R�ponses: 7
    Dernier message: 04/02/2009, 11h03
  4. sprintf (comportement bizarre selon le compilateur)
    Par turbo_chess dans le forum C
    R�ponses: 6
    Dernier message: 11/10/2007, 15h24
  5. [VC++ vs gcc]Comportement compilateur et r�f�rences crois�e
    Par vdemeester dans le forum Autres �diteurs
    R�ponses: 4
    Dernier message: 31/07/2007, 13h33

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