你的线程函数写错了,应该是这样的: function cb_query(var h_para:th_para):dword; stdcall;可以参照 Windows API 看看线程函数的说明
我试过了,改成这样就可以了
我试过了,改成这样就可以了
解决方案 »
- 请问字符串SHL左移后怎么还原?
- 删除注册表问题
- 一个网络端口通讯的问题!
- BCB5 安装DevExpress.QuantumGrid.Suite.v5缺少DBReg.dcu???
- 有人知道吗?在线等.
- 关于DBGrid的显示,急问高手,先谢过了
- 菜鸟问题,这个combobox为什么不响应onchange事件?高手看看啊
- 新建DELPHI加油站QQ群 82426159 欢迎新老朋友加入,
- 谢谢KSXY的帮助!在ACCESS库中我怎么找不到有关图象的字段?
- 哪里有《离散数学》图论中关于四色填充的源代码(C/C++、Delphi实现)?提供源代码者加高分!!!
- 怎样在TEdit的光标当前位置处插入字符
- 怎样将bookmark指针类型转换成数字类型
以下是正确的版本
00451198 681C3C4500 push $00453c1c // 把 h_para 的地址压入堆栈
0045119D E846FEFFFF call cb_query // 调用 cb_query 函数以下是错误的版本(以前的版本)
004511A8 B81C3C4500 mov eax,$00453c1c // 参数通过 eax 传递了
004511AD E8C2FEFFFF call cb_query1可以看出,采用正确的声明方式,参数是按照 stdcall 的约定压入堆栈的,但是如果用 procedure 的话,参数是从 eax 里面传递的,Windows并不知道这一点,还是傻忽忽的从堆栈里面取数据,当然会取到不可预料的数据(我试了一下,取到的是0),再用这个东西做指针去访问内存,一定会出错。