2014-03-26 257 views
0

上午沒有試圖調用調用函數「設置」使用 我得到異常呼叫功能JACOB

Exception in thread "main" com.jacob.com.ComFailException: Can't map name to dispid: set

eventhough COM接口,當我嘗試調用MATLAB中的功能,它的工作好。 ..

這是功能正在使用

public void setAttribute(String attribute, int value) { 

    Variant[] vars = new Variant[3]; 
    vars[0] = new Variant("AttValue"); 
    vars[1] = new Variant(attribute); 
    vars[2] = new Variant(value); 

    signalGroup.invoke("set", vars); 

} 

enter image description here

+0

你做任何這方面的進展如何? – BigMikeW

+0

其實是的,我解決了,並會很快發佈解決方案 –

回答

0
public void setIndexedAttribute(String attribute, Variant value) { 

    Variant[] indecies = new Variant[1]; 
    indecies[0] = new Variant(attribute); 
    setProperty(signalGroup, "AttValue", indecies, value); 

} 

public void setProperty(Dispatch activex, String attributeName, Variant[] indecies, 
     Variant value) { 
    Variant[] variants = new Variant[indecies.length + 1]; 

    for (int i = 0; i < indecies.length; i++) { 
     variants[i] = indecies[i]; 
    } 
    variants[variants.length - 1] = value; 

    Dispatch.invoke(activex, attributeName, Dispatch.Put, variants,new int[variants.length]); 
} 

例如使用它....

sg_1.setIndexedAttribute("State", new Variant(10)); 
+0

@BigMikeW檢查 –

+0

分享歡呼! – BigMikeW

+0

@BigMikeW給予答案,如果它幫助 –