この記事は、
10月22日の「Perl,Ruby,PythonでCOMの引数に配列を指定する」の続きです。(我ながら執念深いなあ〓〓〓。)
今回は、JACOB(Java COM Bridge)を利用して、Javaで試してみました。
10,11,14,15行目でSafeArrayに適当な領域を確保した後ダミーの文字を設定していますが、こうしないと「Can't get code pointer error」と怒られてしまいます。
実行結果の通り、現在のバージョンでは配列が逆さまの順に返ってきます。銘柄コードが入る筈の配列に銘柄名、銘柄名が入る筈の配列に銘柄コードが入っています。
しかし、それを前提にコードを書けば良いのだから、私としては別に困るわけではありません。そのうち、開発チームが直してくれるでしょう。
jdk1.8.0_25と、jacob-1.18-M2で確認しました。
1 import com.jacob.activeX.ActiveXComponent;
2 import com.jacob.com.Dispatch;
3 import com.jacob.com.SafeArray;
4 import com.jacob.com.Variant;
5
6 public class Win32Test {
7
8 public static void main(String[] args) {
9 ActiveXComponent am_names = new ActiveXComponent("ActiveMarket.Names.1");
10 SafeArray codes = new SafeArray(Variant.VariantString, 4);
11 codes.setString(0, "");
12 Variant vn1 = new Variant(Variant.VariantArray, true);
13 vn1.putSafeArrayRef(codes);