****动态链接库指针错误*** 各位兄台帮小弟一下

king8192 2005-05-21 11:12:57
小弟初学使用动态链接库,在调用程序调用运行时并没有问题,可是一关闭程序就报“指针无效”的错误,搞得我一头雾水,由于我刚开始接触,发现不了错误,请各位兄弟一定帮忙解决啊。
dll文件里的过程定义如下:

//执行sql语句 flag 的值 1 代表查询 2 代表插入 3代表修改
procedure execsql(myqy: TADOQuery; mysql: widestring; flag: real);
begin
try
if flag = 1 then
begin
with myqy do
begin
close;
sql.Clear;
sql.Add(mysql);
open;
end;
end
else if (flag = 2) or (flag = 3) then
begin
with myqy do
begin
close;
sql.Clear;
sql.Add(mysql);
execsql;
end;
end;
except
end;
end;

调用声明如下:
procedure execsql(myqy: TADOQuery; mysql: widestring; flag: real); far; external 'aa.dll';

多谢各位兄弟!!
...全文
111 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwjghhh 2005-05-25
  • 打赏
  • 举报
回复
procedure execsql(myqy: TADOQuery; mysql: widestring; flag: real); external 'aa.dll';

正常是这样,如果不行,我想你不要直接传递一个AdoQuery试试看
naughtyboy 2005-05-24
  • 打赏
  • 举报
回复
procedure execsql(myqy: TADOQuery; mysql: widestring; flag: real);stdcall;
king8192 2005-05-24
  • 打赏
  • 举报
回复
我试了大家的办法,好像还是不行,谢谢各位兄台!
等待...
zbk19821023 2005-05-24
  • 打赏
  • 举报
回复
关注
zbb1031 2005-05-22
  • 打赏
  • 举报
回复
好像是应该External 函数名 这样吧?
qizhf 2005-05-22
  • 打赏
  • 举报
回复
用动态调用的方式:
var hdl:Thandle;
execsqlfunc:procedure (myqy: TADOQuery; mysql: widestring; flag: real);
begin

....
hdl:=loadlibrary(handle,'aa.dll');
execsqlfunc:=getprocaddress(hdl,'execsql');
execsqlfunc(myqy, mysql,flag);
....
end;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧