【问题标题】:setParameter for an array property with JACOB带有 JACOB 的数组属性的 setParameter
【发布时间】:2016-10-05 10:36:32
【问题描述】:

我有以下 VB 代码:

Set QuoteRequest = Quotes.Add
With QuoteRequest
    .No = 1
    .QuoteCode(0)="101"
    .Code(0)="NAME1"
    .Code(1)="NAME2"
End With

我使用 JACOB 来访问那个 COM 对象。

quoteRequest.setProperty("No",1);
quoteRequest.setProperty("QuoteCode(0)","101");
quoteRequest.setProperty("Code(0)", "NAME1");
quoteRequest.setProperty("Code(1)", "NAME2");

但这会导致异常

com.jacob.com.ComFailException: Can't map to dispid: QuoteCode(0)

如何传递该属性?

【问题讨论】:

    标签: java vb.net jacob


    【解决方案1】:
    import com.jacob.com.*;
    import com.jacob.activeX.*;
    
    static void setProperty(Dispatch d, String sName, String sIndex, String sValue) {
      Variant av[] = { new Variant(sIndex), new Variant(sValue) };
      Dispatch.invokev(d, sName, Dispatch.Put, av, NO_INT_ARGS).safeRelease();
      av[0].safeRelease(); av[1].safeRelease();
      }
    

    这是我使用的代码。对我有用,但是我正在对 Jacob 进行一些更改,以强制对未使用的变体进行垃圾处理。很难说我到底做了什么,那是几年前的事了:)

    【讨论】:

    • NO_INT_ARGS - 这个参数是什么?
    • 运行此程序时出现com.jacob.com.ComFailException: Type mismatch 异常...
    • NO_INT_ARGS: UTSL。类型不匹配:我的代码适用于属性由字符串索引的情况。你必须稍微修改一下。你需要int iIndex 代替String sIndex
    猜你喜欢
    • 2014-02-04
    • 2017-01-29
    • 2015-09-23
    • 2022-11-09
    • 2012-06-30
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 2018-09-29
    相关资源
    最近更新 更多