拜读zlyperson的轻松架起Java连接COM对象的桥梁后,受益匪浅,这里我想在zlyperson的基础上补充我在做一个项目中的一个运用方法。
项目需求:
从文件中读取数据,调用组件的算法来完成计算,将最终结果返回给java程序再实现结果的进一步运算和显示。
我所采取的策略是:
1、如何传入数据。
从文件中读取数据,如果在java中来完成的话,还要完成从java到com的数据传递,所以我索性在com中来完成,从java中传入一个文件的路径就行了。
ActiveXComponent ActiveXCom = new ActiveXComponent("ComponentName. Someclass");
Dispatch.put(ActiveXCom, "FilePath", new Variant("E:\\数据"));
2、如何得到返还结果。
public String[] GetFinalResult()
{
Variant temp_var;
temp_var = Dispatch.get(ActiveXCom, "FinalResults");
/*------------------------------------------------*/
//整个思路与MFC类似,先是转成SafeArray,然后得到其大小内容
/*------------------------------------------------*/
SafeArray ia = temp_var.toSafeArray();
int temp_lLowerBound = ia.getLBound();
int temp_lUpperBound = ia.getUBound();
int temp_lOptionalResultsNum = temp_lUpperBound - temp_lLowerBound + 1;
String temp_sString[] = new String[temp_lOptionalResultsNum];
for (int i = 0; i < lOptionalResultsNum; i++)
{
temp_sString[i] = ia.getString(i);
System.out.println(temp_sString[i]);
}
return temp_sString;
}