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 confirm�
    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
    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
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    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 confirm�
    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
    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 confirm�
    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
    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
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    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