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++ Discussion :

Conversion de type JavaScript/C++


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 18
    Points
    18
    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

  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
    À 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.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    Merci Médinoc, je vais regarder dans ce sens.

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    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

  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
    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.

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    STDMETHODIMP CClasse_Interface::Test(LONG inArgument)
    {
       blablabla...
    }

    Cette fonction est appelée dans javascript de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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....

  7. #7
    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
    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.

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    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.

  9. #9
    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
    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.

Discussions similaires

  1. [DATE][CONVERSION] du type numerique au type date
    Par hamed dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/04/2005, 16h16
  2. Conversion de type
    Par sovitec dans le forum Langage
    Réponses: 5
    Dernier message: 15/12/2004, 14h29
  3. Conversion de type
    Par poirier dans le forum ASP
    Réponses: 2
    Dernier message: 06/07/2004, 10h30
  4. [MYSQL] conversion de type sur import de script
    Par sebos63 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/08/2003, 10h00
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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