Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

# Parametres in et out

Envoyé par : bigboy2g15

Date : 10/06/2007 10:57

Bonjour,

J'ai une fonction décrite comme ceci dans l'idl :

boolean test(in string entree, out string sortie);

Le code c++ l'implémentant est le suivant :

NS_IMETHODIMP nsPlop::Test(const char *entree, char **sortie, PRBool *_retval)
{
	char * chaine = (char*)nsMemory::Alloc(sizeof(char)* 50);
	strcpy(chaine,"maChaine");
	*sortie = (char*)nsMemory::Alloc(sizeof(char)* 50);
	strcpy(*sortie , chaine);
	*_retval = true;
	return NS_OK;
}

Le code JS l'appelant est :

var entree='chaineEntree';
var sortie;
var res = obj.test(entree,sortie);

Or, j'obtiens l'erreur :

"'Out' argument must be an object"  nsresult: "0x80570002 (NS_ERROR_XPC_NEED_OUT_OBJECT)"  

C'est une erreur que je n'ai trouvé que sur 2 pages sur le net, et dans aucun cas une explication n'est fournie.

L'argument OUT est bien existant à la fois dans le c++ et le js, je ne vois donc pas du tout d'où vient le problème, le problème ne venant pas du "obj", d'autre fonction avec des renvois d'une variable en _retval fonctionne parfaitement. Comme j'ai besoin de renvoyer plusieurs variables ( ici ce n'est qu'un exemple ), j'ai besoin d'utiliser le retour par paramètres. J'ai essayé en remplaçant out par inout, même résultat.

Merci d'avance pour toutes suggestions !

# Re: Parametres in et out

Envoyé par : Paul Rouget

Date : 11/06/2007 11:56

var entree='chaineEntree';
var sortie = {value: null};
var res = obj.test(entree,sortie);
alert(sortie.value);

# Re: Parametres in et out

Envoyé par : bigboy2g15

Date : 14/06/2007 15:53

Merci, comme ça cela marche.

Bizarre comme le JavaScript peu parfois être permissif, et d'autre fois non.

( Sinon, si d'autre ont ce problème, il faut faire sortie.value pour accéder à la valeur. Tout bête, mais on sait jamais ! )

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.