-
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?
-
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
-
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#:mrgreen:)
MonObjetCOM fCLient = new MonObjectCOM();
int iHandle=0;
fCLient.Connect(ref iHandle);
Il faudrait "caster" le int en object?