dll高手请教

hewhl 2004-05-03 06:19:47
在dll的frmlgn中有Adoconnection,在host中用dll中的frmfgn传递的是application.handle,可是把frmlgn关闭时老是报地址错,我在关闭前以把adoconnection.Connected:=false,
frmlgn上还有两个动态创的adoquery也closed了!请问这怎么处理!
...全文
55 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞翔的老虎 2004-05-07
  • 打赏
  • 举报
回复
Create(nil)等改成Create(application)?
yurenjf 2004-05-06
  • 打赏
  • 举报
回复
function Tfrmlgn.login(name,psw:string):boolean;
var
qlgn:tadoquery;
begin
try
qlgn:=tadoquery.Create(nil);
qlgn.Connection:=adocn;
qlgn.Active:=false;
qlgn.SQL.Clear ;
qlgn.sql.Text:='select username,password from usertbl where username=:name and password=:psw ';
qlgn.Parameters.ParamValues['name']:=name;
qlgn.Parameters.ParamValues['psw']:=psw;
qlgn.Active:=true;
if qlgn.RecordCount >0 then
result:=false
else
result:=true;
finally
qlgn.Close;
qlgn.Free; //***********必须的
end;
end;


procedure Tfrmlgn.BitBtn1Click(Sender: TObject);
begin
try
if login(user.Text,psw.Text) then
begin
messagebox(application.handle,'密码不正确!','警告',mb_Iconinformation);
psw.Text:='';
psw.SetFocus;
end
else begin
adocn.Connected:=false;
//adocn.Free ; //我觉得你的connection 实在form里面创建的,不需要在这里释放,系统会自动释放的
frmlgn.close ;
frmsplash:=tfrmsplash.Create(nil);
frmsplash.ShowModal;
frmsplash.Update ;

end;
finally

end;
end;

procedure Tfrmlgn.FormCreate(Sender: TObject);
var
tlgn:tadoquery;
begin
user.text:='';
psw.text:='';
tlgn:=tadoquery.Create(nil);
try
tlgn.Connection:=adocn;
tlgn.Active :=false;
tlgn.SQL.Text :='select username from usertbl';
tlgn.Active :=true;
while not tlgn.Eof do
begin
user.Items.add(tlgn.FieldValues['username']);
tlgn.Next;
end;
user.ItemIndex :=0;
finally
qlgn.Free; //***********必须的
tlgn.close;
end;
end;
hewhl 2004-05-04
  • 打赏
  • 举报
回复
CODE:
function Tfrmlgn.login(name,psw:string):boolean;
var
qlgn:tadoquery;
begin
try
qlgn:=tadoquery.Create(nil);
qlgn.Connection:=adocn;
qlgn.Active:=false;
qlgn.SQL.Clear ;
qlgn.sql.Text:='select username,password from usertbl where username=:name and password=:psw ';
qlgn.Parameters.ParamValues['name']:=name;
qlgn.Parameters.ParamValues['psw']:=psw;
qlgn.Active:=true;
if qlgn.RecordCount >0 then
result:=false
else
result:=true;
finally
qlgn.Close;
end;
end;


procedure Tfrmlgn.BitBtn1Click(Sender: TObject);
begin
try
if login(user.Text,psw.Text) then
begin
messagebox(application.handle,'密码不正确!','警告',mb_Iconinformation);
psw.Text:='';
psw.SetFocus;
end
else begin
adocn.Connected:=false;
adocn.Free ;
frmlgn.close ;
frmsplash:=tfrmsplash.Create(nil);
frmsplash.ShowModal;
frmsplash.Update ;

end;
finally

end;
end;

procedure Tfrmlgn.FormCreate(Sender: TObject);
var
tlgn:tadoquery;
begin
user.text:='';
psw.text:='';
tlgn:=tadoquery.Create(nil);
tlgn.Connection:=adocn;
tlgn.Active :=false;
tlgn.SQL.Text :='select username from usertbl';
tlgn.Active :=true;
while not tlgn.Eof do
begin
user.Items.add(tlgn.FieldValues['username']);
tlgn.Next;
end;
user.ItemIndex :=0;
tlgn.close;
end;

请指出错在哪里??????
aiirii 2004-05-04
  • 打赏
  • 举报
回复
<<delphi 開發人員指南>>6 有說到這個問題,應該是你的窗體釋放有問題
BlueSoftEye 2004-05-04
  • 打赏
  • 举报
回复
我也遇到同样问题,老实退出时出错,等待高手
yurenjf 2004-05-04
  • 打赏
  • 举报
回复
注意在关闭时是否释放了占用的资源和释放顺序

最好把代码贴出来看看...
hewhl 2004-05-03
  • 打赏
  • 举报
回复
高手都到哪里去玩了啊?

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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