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

Windows Forms Discussion :

variant, ActiveX et C#


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Par défaut variant, ActiveX et C#
    salut à tous,

    je fais un petit prog en C# qui utilise un composant ActiveX (écrit en Delphi). Une des méthodes d'un objet nécessite le passage pas référence d'un variant que la méthode va modifier (c'est un integer à la base) et l'appli va utiliser cette valeur plus tard.


    voici la syntaxe qui marche depuis VisualBasic pour utiliser ce variant:
    Dim cltHandle As Variant
    Dim fCLient As New MonObjetCOM
    ' Appel de la méthode
    fCLient.Connect(cltHandle)


    Je souhaite faire l'équivalent en C# mais je ne vois pas trop la syntaxe à utiliser. L'IDE me dit que la méthode requiert un ref object comme parametre. MonObjetCOM.Connect(ref object cltHandle)

    Mais quand je fais ceci en C#:
    MonObjetCOM fCLient = new MonObjectCOM();
    object cltHandle = new object();
    fCLient.Connect(ref cltHandle);

    Ca compile mais au moment de l'execution de la 3ème ligne cela plante et affiche une erreur comme quoi ne peut pas convertir en integer. Une idée sur l'astuce syntaxique pour utiliser ce variant?

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    beh, tu crées un objet, mais ton object, il n'y a rien dedans.

    A mon avis, tu peux créer un int et le passer par ref plutot qu'un object (car int hérite de object comme toutes les classes du framework d'ailleurs)

    The Monz, Toulouse

  3. #3
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Par défaut
    OK, certe il n'y a rien dans l'objet mais c'est le composant COM qui lui met une valeur dans le bec,

    bref ca marche en faisant:
    MonObjetCOM fCLient = new MonObjectCOM();
    object cltHandle = new object();
    cltHandle = 0;
    fCLient.Connect(ref cltHandle);

    par contre avec ta méthode d'utiliser un int directement me donne une erreur: impossible de convertir ref int en ref obj (désolé, je débute C#)
    MonObjetCOM fCLient = new MonObjectCOM();
    int iHandle=0;
    fCLient.Connect(ref iHandle);

    Il faudrait "caster" le int en object?

Discussions similaires

  1. [ActiveX] Propriété "Picture" dans un contrôle util
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/12/2002, 15h59
  2. PB d'import avec les ActiveX sous BCB6
    Par dergen dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/11/2002, 10h18
  3. [ActiveX] Visibilité d'une propriété
    Par paradise dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/11/2002, 18h33
  4. Convertion de type VARIANT à type CString
    Par j_grue dans le forum MFC
    Réponses: 2
    Dernier message: 07/11/2002, 14h18
  5. ActiveX : linker en statique ?
    Par tut dans le forum MFC
    Réponses: 8
    Dernier message: 07/11/2002, 10h24

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