Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

# Erreur javascript lors de l'appel de mon composant XPCOM

Envoyé par : free_zy

Date : 08/10/2005 20:40

Je remet ma discussion en enlevant le caractère (0x 80570001) qui pose problème apparemment :

Bonjour,

je viens de recommencer a développer un composant XPCOM, je l'ai enregistré dans firefox, dans le component viewer je vois bien mon interface et sa méthode HelloWorld.

Voici sa declaration dans la idl :

#include "nsISupports.idl"
[scriptable, uuid(12C46F4B-099F-4FC0-9E91-02DD67686AAA)]
interface IClientService : nsISupports
{
  void HelloWorld(out short message);
};

dans l'interface :

NS_IMETHOD HelloWorld(PRInt16 *message) = 0;

et son implémentation :

NS_IMETHODIMP ClientService::HelloWorld(PRInt16 *message)
{
 *message = 2;
 return NS_OK;
}

Mais lorsque j'essaie d'apeller cette méthode de mon composant en javascript en faisant :

function HelloWorld() {
 netscape.security.PrivilegeManager.
 enablePrivilege("UniversalXPConnect");
 obj =  Components.
 classes["@clientservice.com/ClientService;1"].
 getService(Components.interfaces.IClientService);
 
 var res = obj.HelloWorld();
 alert(res);
}

j'ai l'erreur suivante ;

Erreur : uncaught exception: <a href="Exception... &quot;Not enough arguments <a href="IClientService.HelloWorld">IClientService.HelloWorld</a>&quot; nsresult: &quot; (NS_ERROR_XPC_NOT_ENOUGH_ARGS)&quot; location: &quot;JS frame :: file:///C:/xul/clientserviceTest.js :: HelloWorld :: line 4&quot; data: no">Exception... &quot;Not enough arguments (..)</a>

__Avez-vous une idée sur cette erreur vraiment bizarre ?? car apres avoir tourné dans tous les sens je ne pas ou est mon erreur.__

# Re: Erreur javascript lors de l'appel de mon composant XPCOM

Envoyé par : Julien Appert

Date : 09/10/2005 02:30

L'erreur te dit qu'il n'y a pas assez d'arguments dans ton appel de fonction, ce qui est vrai, puisque tu appelles HelloWord() à vide alors qu'elle attend un PRInt16 *message.

C'est en tout cas l'impression que j'ai, là, à froid, à 2h30 du matin... ;o)

# Re: Erreur javascript lors de l'appel de mon composant XPCOM

Envoyé par : free_zy

Date : 09/10/2005 10:48

Merci beaucoup deja tu as du mérite de me répondre a 2h30 du matin.

j'avais dans l'idée de déclarer le retour de la fonction en déclarant le paramètre en type "out". Ce n'est pas de cette manière qu'il faut procéder pour déclarer le type de retour d'une fonction ?

(Bon je vais regarder dans la doc de xpidl car il me semblait que je faisait comme ca deja avant et ca marchait)

# Re: Erreur javascript lors de l'appel de mon composant XPCOM

Envoyé par : free_zy

Date : 09/10/2005 11:40

Bon,

j'ai déclaré mon idl différemment à savoir :

#include "nsISupports.idl"

[scriptable, uuid(12C46F4B-099F-4FC0-9E91-02DD67686AAA)]
interface IClientService : nsISupports
{
  string HelloWorld();
};

et ca a marché !

Merci beaucoup de m'avoir aiguillé.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.