Envoyé par : ramariavelo
Date : 01/03/2007 18:48
Bonjour à tous,
Je cherche un moyen de mettre un tableau de string dans un composant XPCOM, mais je n'ai pas trouvé de tutoriels compréhensibles là-dessus. L'un de vous pourrait-il m'aider?
Merci d'avance
Envoyé par : Paul Rouget
Date : 02/03/2007 11:53
Voilà un exemple pour ton idl (un tableau d'objets de type nsIFoobar):
[array, size_is(count)] in nsIFoobar monTableau
Je te conseille aussi de regarder du coté de nsI(Mutable)Array.
Envoyé par : ramariavelo
Date : 02/03/2007 12:39
Merci pour l'info Je vais voir les 2 possibilités.
Envoyé par : ramariavelo
Date : 02/03/2007 16:43
J'ai utilisé nsIMutableArray, et j'ai appris que pour accéder aux éléments du tableau, on utilise queryElementAt. Seulement voilà : avec mon instruction
table.queryElementAt(1, Components.interfaces.nsIMutableArray, table)
Celà ne marche pas. D'autant plus que je ne suis pas sure de mettre "table" dans le 3è argument. Voici l'erreur que j'obtiens
[Exception..."Component returned failure code: 0x8000ffff(NS_ERROR_UNEXPECTED) [nsIMutableArray.queryElementAt]" nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)" location: "JS frame :: chrome://mytoolbar/content/mytoolbar.js :: CallFunction :: line 479" data:no]
Est-ce l'insertion de données qui a échouée ou leur récupération? Quelqu'un aurait une solution à me proposer? Merci
Envoyé par : ramariavelo
Date : 05/03/2007 18:51
J'ai résolu mon problème
Pour ceux qui ont auront besoin : vaut mieux utiliser nsICollection. C'est plus simple car parmi les méthodes de nsIMutableArray, il y a des in/out paramètres, qui ne sont pas gérés par javascript.
Envoyé par : Paul Rouget
Date : 05/03/2007 21:04
Comment ça ? Ils sont bien évidement gérés en Javascript.
Envoyé par : laurentj
Date : 24/04/2007 13:23
il y a des in/out paramètres, qui ne sont pas gérés par javascript.
Bien sûr que si. quand il y a des paramètres out, suffit de donner un objet JS (vide à la limite), et tu récupère le paramètre out dans sa propriété value
var result = {} table.queryElementAt(1, Components.interfaces.nsIMutableArray, result) var element = result.value;
Remarque : les élements de ton tableau, ce sont aussi des tableaux ? tu as un tableau de tableau ? parce que si c'est pas le cas, le deuxième paramètre est faux, il faut que tu donne l'interface de l'element que tu veux récupérer, pas nsIMutableArray.
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.