接口定义:HRESULT Test([out]VARIANT *vv/*数组*/,[out,retval]long* lrt)
再VBS中可以正确调用,但是在JSP中却不能调用。是否JSP不支持VAIRANT类型?如果否请给出正确的调用方式,最好源码。我发现不同语言之间的数据类型转换最麻烦。下面给出正确的VBS调用,希望有帮助:
dim vv,lrt
lrt = Test(vv)

解决方案 »

  1.   

    HRESULT Test([out]VARIANT *vv/*数组*/,[out,retval]long* lrt)接口定义是错的,vv只是指向单变量,应改为HRESULT Test([out,size_is(*lrt)]VARIANT *vv/*数组*/,[out,retval]long* lrt)
      

  2.   

    JSP是支持VARIANT的,不过语法我不懂,不好意思
      

  3.   

    VARIANT结构有个数据指针,好像不需要使用size_is来指定大小,我看了一些参考资料也只有一般的数组指针才需要指明数组大小(如int数组)。这一点我也不是很确定,可以试试你的方法。JSP我也不怎么懂,所以怎么测试都有问题,才会疑问是否支持VARIANT。等下我贴出我的JSP调用源码,请各位帮我诊断一下。
      

  4.   

    var arr = new Array(100);//我的数组长度为100(实际上类型为unsigned char uc[100])
    var lrt;//这个是返回值用于查错的
    lrt = object.Test(arr)
    怎么输出的数组数据是错误的?
      

  5.   

    JSP应改指的是JScript吧。
    我原来也遇到过这个问题,后来放下了一直没有解决,不过我觉得JScript中的数组是一个对象,不是SAFEARRAY,应该转成IDispatch调用上面的方法吧。
      

  6.   

    我在JScript的reference中看到一个VBArray Object,但是调用vc的VARIANT还是会出错。不知道有谁用过。如果用IDispatch是否太过麻烦了?我觉得应该有数组可以调用,要不com的通用性是否会打折扣?