作者cobrasgo (体重突破所有均线)
看板Python
标题Re: [问题] ctype注册callback function
时间Thu Jan 27 19:02:54 2011
感谢大家的帮忙,我试出来了(虽然还有error囧)
http://codepad.org/lqIVmoKK
其中_sendOrder这个function是我早上写的,
用来测试若不传callback function为参数的话,
会不会work,
这个很顺利,
一次就成功,
所以有需要的人可以直接拿去用
另外之前试不起来的主因是这行
CMPFUNC = CFUNCTYPE(c_int, comtypes.BSTR)
就是create ctype的callback function时
它应该是会去检查这个type对不对
我把参数那栏改成comtypes.BSTR之後
就可以work了
我想简单的说就是它对参数的格式
检查很严格吧
而之前把callback function取id再转型
完全就是交叉测试
因为不知道不work的原因在哪
就乱试一通啦XD
原来我还怀疑在callback function里用print
不能保证会print到console下
所以让它写个测试字串到file里
所以_testWrite()就是这个想法下的产物…
以上就是这次测试过程的一些想法
跟大家分享一下
=======================
另外目前这个版本的code
虽然会work(就是callback有抓到帐户资料)
但是还有两个问题
1) 有error
Traceback (most recent call last):
File "_ctypes/callbacks.c", line 320, in 'converting callback result'
TypeError: an integer is required
Exception in <bound method qyAPI._oiCallback of <__main__.qyAPI instance
at 0x00EE8C88>> ignored
Traceback (most recent call last):
File "C:\qy\2.1.5\ctypes\qyAgent.py", line 81, in go
self._GetUserAccount()
ValueError: Procedure probably called with too many arguments (942000 bytes
in excess)
官网上对这个error的说法是1)错误的参数个数,或是2)错误的calling convention
应该是第二个wrong calling convention
但是这个我就没有想法了囧
2) callback function被呼叫了两次
如果会叫两次的话
这个case是ok
若其它case应该会造成困扰
以上再请教大家的想法
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.130.51.128
※ 编辑: cobrasgo 来自: 220.130.51.128 (01/27 19:14)