无法调用CAPL功能。 Python pywintypes.com_error :( -2147352567,'发生异常。',(0,无,无,无,0,-2147352571),10)

时间:2017-12-13 07:32:19

标签: python capl

我试图从Python调用CAPL函数,在python中将char数组作为参数 参考:Call CAPL function from Python

但它会抛出错误

  

function1.Call(my_char_array)   文件" C:\ Python27 \ lib \ site-packages \ win32com \ gen_py \ 4CB02FC0-4F33-11D3-854D-00105A3E017Bx0x1x31.py",第1668行,   在通话中       ,第7页,第8页,第9页,第10页)     文件" C:\ Python27 \ lib \ site-packages \ win32com \ client__init __。py",第467行, ApplyTypes       self。 oleobj .InvokeTypes(dispid,0,wFlags,retType,argTypes,* args),   pywintypes.com_error:(-2147352567,'发生异常。',(0,无,无,无,0,-2147352571),10)

我无法将函数中的char从Python传递给CAPL函数。传递整数有效。任何帮助将不胜感激。

代码段:

的Python:

    var = 'ABCD'
    my_char_array = array('c', var)
    print my_char_array.tostring()
    function1.Call(my_char_array)

CAPL:

void function1(char var1[])
{
    write("function1() called with %s!", var1);
}

1 个答案:

答案 0 :(得分:1)

第15页底部的 Vector's documentation对此进行了解释:

  

输入参数的数量限制为10,不能将数组作为CAPL函数参数传递。在CAPL中使用Long类型的输入参数是切实可行的。在这种情况下,可以从VB.NET / C#传递来自类型字节(1字节),整数(2字节)和长(4个字节),无需担心VB.NET / C#和CAPL之间匹配的类型。

我有机会使用Python脚本调用CAPL函数,并且必须弄清楚这也适用于Python。