我试图从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);
}
答案 0 :(得分:1)
第15页底部的 Vector's documentation对此进行了解释:
输入参数的数量限制为10,不能将数组作为CAPL函数参数传递。在CAPL中使用Long类型的输入参数是切实可行的。在这种情况下,可以从VB.NET / C#传递来自类型字节(1字节),整数(2字节)和长(4个字节),无需担心VB.NET / C#和CAPL之间匹配的类型。
我有机会使用Python脚本调用CAPL函数,并且必须弄清楚这也适用于Python。