dll高手请教

hewhl 2004-05-03 06:19:47
在dll的frmlgn中有Adoconnection,在host中用dll中的frmfgn传递的是application.handle,可是把frmlgn关闭时老是报地址错,我在关闭前以把adoconnection.Connected:=false,
frmlgn上还有两个动态创的adoquery也closed了!请问这怎么处理!
...全文
13 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
飞翔的老虎 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
高手都到哪里去玩了啊?
  • 打赏
  • 举报
回复
相关推荐
发帖
Delphi
加入

4968

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2004-05-03 06:19
社区公告
暂无公告