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 :

Convertir 'signed char *' en 'System::Object ^'


Sujet :

C++/CLI

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 84
    Points : 53
    Points
    53
    Par défaut Convertir 'signed char *' en 'System::Object ^'
    Bonjour,

    Dans le but de sauvegarder un tableau de bits dans une base de données SQL Server, j'utilise la couche ADO.NET
    Par contre, lors de la compilation, j'ai un message d'erreur : impossible de convertir le paramètre 1 de 'signed char *' en 'System::Object ^'

    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
     
    	// Connexion
    	SqlConnection ^connection = gcnew SqlConnection(connectString);
    	connection->Open();
     
    	// Requete
    	String ^ myRequete = "UPDATE COM_PKCS12 SET PKCS12 = @myPKCS12 WHERE ID = '" + System::Convert::ToString(id) + "'";
     
    	// Objet Command
    	SqlCommand ^command = gcnew SqlCommand( myRequete, connection);
     
    	//Récupération du tableau de bits
    	SByte *myDatas = pkcs12Data->array;
     
    	// Parameters
    	command->Parameters->Add(gcnew SqlParameter("@myPKCS12", SqlDbType::VarChar, 1024));
    	command->Parameters["@myPKCS12"]->Value = myDatas;
     
    	// Execution
    	int affectedrows = command->ExecuteNonQuery();
     
    	// Fermeture connection
    	connection->Close();
    Merci

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Sous un Visual assez récent (2010 et supérieur, il me semble), un marshal_as<String^>() devrait suffire, si le header correspondant <msclr\marshal.h> est inclus.

    Edit: J'avais mal lu, si tu veux un tableau de bytes c'est un array<Byte>^ qu'il faut utiliser.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 84
    Points : 53
    Points
    53
    Par défaut
    Merci. Mais à prioiri il n'a pas aimé la conversion :

    Erreur 5 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. c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\msclr\marshal.h 238

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 84
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Edit: J'avais mal lu, si tu veux un tableau de bytes c'est un array<Byte>^ qu'il faut utiliser.
    Merci mais comment ? En faisant quelle type de conversion ?

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Le plus simple que je connais: Tu alloues ton tableau avec gcnew puis tu utilises Marshal::Copy de l'ancien tableau vers le nouveau.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 9
    Dernier message: 31/05/2006, 17h11
  2. cast char * to System::Object^
    Par dmk04 dans le forum MFC
    Réponses: 1
    Dernier message: 29/05/2006, 23h06
  3. comment convertir un char[] en double
    Par groult jeremy dans le forum C++
    Réponses: 6
    Dernier message: 17/11/2005, 14h49
  4. [Conversion]Convertir un char[] en int
    Par ThanosT dans le forum Général Java
    Réponses: 10
    Dernier message: 11/11/2005, 12h23
  5. [ATL] Convertir un char* en LPCTSTR
    Par MrMaze dans le forum MFC
    Réponses: 6
    Dernier message: 27/04/2005, 21h48

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