Précédent   Forum des professionnels en informatique > C et C++ > C++
C++ Forum d'entraide technique sur le langage C++. Avant de poster -> F.A.Q C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 06/09/2010, 10h09   #1
Invité régulier
 
Inscription : avril 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 29
Points : 7
Points : 7
Par défaut Conversion de type JavaScript/C++

Bonjour,
Tout d'abord je vous pris de m'excuser si le sujet n'est pas exactement dans le bon forum. S'agissant de 3 technologies (Javascript + ActiveX + C++), je ne suis pas certains du lieu où il faut poster ce message.

Ce que j'aimerai savoir c'est la conversion (typage) entre JavaScript et C++.

Je m'explique : j'ai un activeX développé en C++ (VS). J'appelle cet objet ActiveX à partir d'une page html JavaScript. Or j'aimerais par exemple faire l'addition de deux valeurs d'un tableau. Dans JavaScript je définie un "new Array(2)" puis je crée l'objet ActiveX et j'appelle la fonction d'addition. Mais pour l'objet ActiveX, quel type dois-je déclarer pour la variable en entrée de la fonction (qui doit faire l'addition) ?

Ce n'est qu'un exemple. En fait le mieux serait d'avoir un document qui traite de ce sujet de conversion entre JavaScript et ActiveX (C++).

Je ne sais pas si le travail dans ce domaine a été fait. Je vous remercie par avance pour votre aide.

RakZ
aurelius_pr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2010, 12h54   #2
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 21 337
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

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

Informations forums :
Inscription : septembre 2005
Messages : 21 337
Points : 28 438
Points : 28 438
Envoyer un message via MSN à Médinoc
À vue de nez, je vois deux solutions possibles:
  • Soit il existe un type COM spécifique aux tableaux Javascript
  • Soit le moteur convertit en SAFEARRAY pour appeler le composant COM.
Personnellement, je pencherais pour la seconde solution. Si ta Type Library dit que ton interface prend un SAFEARRAY, alors Javascript te donnera un SAFEARRAY.
__________________
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.
Médinoc est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2010, 09h21   #3
Invité régulier
 
Inscription : avril 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 29
Points : 7
Points : 7
Merci Médinoc, je vais regarder dans ce sens.
aurelius_pr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2010, 10h22   #4
Invité régulier
 
Inscription : avril 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 29
Points : 7
Points : 7
L'utilisation de SAFEARRAY n'est pas possible dans la mesure où la fonction dans ActiveX ne peut pas prendre en paramètre ce type de variable.

J'ai pensé à utiliser la type VARIANT... mais le problème est toujours que je ne sais pas comment sont "interprétées" les variables de JavaScript lorsqu'on les passe dans un objet ActiveX.

RakZ
aurelius_pr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2010, 11h49   #5
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 21 337
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

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

Informations forums :
Inscription : septembre 2005
Messages : 21 337
Points : 28 438
Points : 28 438
Envoyer un message via MSN à Médinoc
Citation:
Envoyé par raksmey Voir le message
L'utilisation de SAFEARRAY n'est pas possible dans la mesure où la fonction dans ActiveX ne peut pas prendre en paramètre ce type de variable.
Je ne comprends pas ce que tu veux dire. S'agit-il d'une interface sur laquelle du n'as pas le contrôle?

SAFEARRAY est un type Automation; Toutes les implémentations de COM, dynamiques ou statiques, basées sur IDispatch ou non, sont supposées le supporter, comme BSTR...
__________________
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.
Médinoc est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2010, 13h35   #6
Invité régulier
 
Inscription : avril 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 29
Points : 7
Points : 7
Oui excuses-moi je me suis peut être mal exprimé.

Soit une méthode d'un objet activeX (en C++) (nommé Classe_Interface) de type :
Code :
1
2
3
4
5
 
STDMETHODIMP CClasse_Interface::Test(LONG inArgument)
{
   blablabla...
}

Cette fonction est appelée dans javascript de la sorte :
Code :
1
2
 
var obj = new ActiveXObject("Objet_Active_X.Classe_Interface");
Objet_Active_X étant le nom du projet sous Visual Studio.

Pour appeler la méthode "Test" on fait (en javaScript) :
Code :
1
2
 
obj.Test(ArgumentQuelconque) ;
Or ce que j'aimerais savoir, c'est comment (si c'est possible) faire en sorte que "ArgumentQuelconque" puisse être un tableau, une structure,...
Je pensais utiliser SAFEARRAY comme type de variable (générique) en entré d'une méthode d'un objet ActiveX mais ce n'est pas possible....
aurelius_pr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2010, 14h15   #7
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 21 337
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

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

Informations forums :
Inscription : septembre 2005
Messages : 21 337
Points : 28 438
Points : 28 438
Envoyer un message via MSN à Médinoc
Ah!

En effet, si tu veux que le truc soit complètement générique (l'équivalent de void*, quoi) tu devras sans doute utiliser un VARIANT.

Mais si tu veux juste que cette méthode fasse l'addition de deux valeurs dans un tableau d'entiers, tu dois pouvoir accepter un SAFEARRAY(int) en paramètre dans l'IDL (ce qui en C++, donne un SAFEARRAY *).
__________________
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.
Médinoc est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2010, 14h31   #8
Invité régulier
 
Inscription : avril 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 29
Points : 7
Points : 7
Oui merci, je crois aussi que VARIANT est ce qu'il faut utiliser.
Mais la difficulté reste la conversion de type entre le code c++ et le code javascript.
aurelius_pr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2010, 14h44   #9
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 21 337
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

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

Informations forums :
Inscription : septembre 2005
Messages : 21 337
Points : 28 438
Points : 28 438
Envoyer un message via MSN à Médinoc
En fait, je te conseillerais de tester, tout simplement: Afficher un message avec la valeur du type du VARIANT...
__________________
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.
Médinoc est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 18h02.


 
 
 
 
Partenaires

Hébergement Web