A:在python交互中,通过RemoteCallFunc调天软模型,在传递数组参数时,会出现失败情况。
问题重现案例:
有天软函数
Function TestFunCall(a);//a定义为一个数据表格类型
Begin
return a;
end;
python中调用
import sys
sys.path.append('C:\Program Files\Tinysoft\Analyse.NET')
import TSLPy3 as ts
a={43131.0:100,43160.0:200}
data = ts.RemoteCallFunc("TestFunCall", [a],{})
print(data)
python中打印结果为:(0, [], None)
原因是:天软数组下标只支持整数与字符串,所以,当传入非整型的实数的下标结构数据时,会导致失败。
解决办法:
方式一:不改模型,改数据:改变数据下标数据类型,将实数下标转换成整型下标,即可传递成功
import sys
sys.path.append('C:\Program Files\Tinysoft\Analyse.NET')
import TSLPy3 as ts
a={43131:100,43160:200}
data = ts.RemoteCallFunc("TestFunCall", [a],{})
print(data)
python中打印结果为:(0, {43160: 200, 43131: 100}, None)
方式二:不改数据,改模型:将python中的结构数据转化为json串后,传进天软函数中后,再调用importjsonstring解析json串即可,该种方式可支持各种复杂的数据类型的传递。
注:当需要天软传数据进python时,也可通过json串,解决一些编码问题,具体可参考:FAQ:
Q:在天软将结果转换成Json串返回到python中解决转码引起的效率低下问题
修改天软模型为:
Function TestFunCall(a);//a定义为一个数据表格类型
Begin
return importjsonstring(a);
end;
python中实现更改为:
import sys
sys.path.append('C:\Program Files\Tinysoft\Analyse.NET')
import TSLPy3 as ts
import json
a={43131:100,43160:200}
b=json.dumps(a)
data = ts.RemoteCallFunc("TestFunCall", [b],{})
print(data)
python中打印结果为:(0, {b'43131': 100, b'43160': 200}, None)
注意:此时的下标为字符串型,而非整型