В моем приложении Java SWT у меня есть сторонний элемент управления ActiveX. Я использую OleClientSite для этого.Java SWT взаимодействует с COM - помещает float [] в вариант?
// Ah, this works. :-)
OleAutomation comObject = new OleAutomation(...);
Есть две простые функции, которые я хочу вызвать с Java. Ниже приведены определения функций COM:
[id(5)]
void easyFoo([in] int blah);
[id(20)]
void problemFoo([in] VARIANT floatArray);
Простенько, правильно? Вот мой Притворитесь код:
// 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?]);
Проблема заключается в последней строке: Как передать массив с плавающей точкой на 3-й объект сторона COM? ПОМОЩЬ!
Благодарим вас за эти отзывы. Я просто добавил комментарий, объясняющий, что я нашел (и что я сделал * не * нашел) о SAFEARRAY. – VonC
Просто добавила еще одну ссылку на проект Java, управляющий 'SAFEARRAY'. Может быть, это может помочь. – VonC
@Judah: проблема с '' VARIANT'' это то, что потенциально может быть чем угодно. Тем не менее, если SAFEARRAY это, вы просмотрели http://j-integra.intrinsyc.com/support/com/doc/types/index.html и http://j-integra.intrinsyc.com/support/kb /Article.aspx?id=30430? – VonC