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

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';

多谢各位兄弟!!
...全文
87 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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;
回复
相关推荐
综教楼后的那个坑用双向链表实现 描述   在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。其中一种说法是,在很多年以前,这个坑就已经在那里了。这种说法也被大多数人认可,这是因为该坑有一种特别的结构,想要人工建造是有相当困难的。   从横截面图来看,坑底成阶梯状,由从左至右的 1..N 个的平面构成(其中 1 ≤ N ≤ 100,000),如图:    *            * :    *            * :    *            * 8    *    **      * 7    *    **      * 6    *    **      * 5    *    ********* 4 <- 高度    *    ********* 3    ************** 2    ************** 1 平面 |  1  |2|   3    | 每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。灌水点设在坑底位置最低的那个平面,每分钟灌水量为一个单位(即高度和宽度均为 1)。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。   请你计算每个平面被水覆盖的时间。    灌水 水满后自动扩散 | | * | * * | * * * * V * * V * * * * * * .... * *~~~~~~~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~**~~~~~~* *~~~~**~~~~~~* * ********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* ************** ************** ************** ************** ************** **************    4 分钟后    26 分钟后        50 分钟后    平面 1 被水覆盖     平面 3 被水覆盖    平面 2 被水覆盖输入   输入的第一行是一个整数 N,表示平面的数量。从第二行开始的 N 行上分别有两个整数,分别表示平面的宽度和高度。 输出   输出每个平面被水覆盖的时间。
发帖
Windows SDK/API
创建于2007-08-02

1156

社区成员

Delphi Windows SDK/API
申请成为版主
帖子事件
创建了帖子
2005-05-21 11:12
社区公告
暂无公告