Dans mon application Java SWT, j'héberge un contrôle ActiveX tiers. J'utilise OleClientSite pour le faire.Java SWT interop avec COM - mettre un flotteur [] dans un variant?
// Ah, this works. :-)
OleAutomation comObject = new OleAutomation(...);
Il y a 2 petites fonctions simples que je veux appeler depuis Java. Voici les définitions des fonctions COM:
[id(5)]
void easyFoo([in] int blah);
[id(20)]
void problemFoo([in] VARIANT floatArray);
Facile, n'est-ce pas? Voici mon code à faire semblant:
// Ah, this works. :-)
OleAutomation comObject = new OleAutomation("Some3rdPartyControlHere");
// Call easyFoo(42). This works. :-)
int easyFooId = 5;
comObject.invoke(easyFooId, new Variant[] { new Variant(42) });
// Call problemFoo(new float[] { 4.2, 7.0 }). This doesn't work. :-(
int problemFooId = 20;
comObject.invoke(problemFooId, [ACK! What goes here?]);
Le problème est sur la dernière ligne: comment puis-je passer un tableau flottant à la 3ème partie objet COM? AIDE!
Merci pour ces commentaires. Je viens d'ajouter un commentaire expliquant ce que j'ai trouvé (et ce que j'ai fait * pas * trouver) sur SAFEARRAY. – VonC
Ajout d'une autre référence à un projet Java manipulant 'SAFEARRAY'. Peut être cela pourrait aider. – VonC
@Judah: le problème avec '' VARIANT' 'est que peut être n'importe quoi. Pourtant, si SAFEARRAY c'est, avez-vous vérifié http://j-integra.intrinsyc.com/support/com/doc/types/index.html et http://j-integra.intrinsyc.com/support/kb /Article.aspx?id=30430? – VonC