delphi设计登录界面密码错误限制3次登录

本人在用delphi做一个登录界面, 想限制登录次数,如果密码输错3次,禁止登录,退出系统。请教大家帮我看一下,限制密码错误登录3次的代码哪里错了?运行结果是:无论密码输错几次,都不会退出系统。很着急,求大神,在线等,谢谢!图片

0

6个回答

按照你的方法做了,还是不可以图片

0
qq_34105767
LPPC 回复Helenxd: 也是醉了
3 年多之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 贴出完整代码,不要贴图
3 年多之前 回复

把count的定义放在函数外面,作为成员变量。否则每次执行按钮,都是0

4

1.Count变量在第二张图中定义和初始化为0是正确的,即不能放在SpeedButton1Click函数中,
否则每次点击后将会把Count值设置为0,起不到计数累加的作用。
2.你的算法思路不正确

  adoquery1.recordset.recordcount=0 then
begin
  if count>3 then //大于3的条件,只有当count值为4或以上是才有可能执行if内的语句。
                  //从0到4,这相当于你的输入错误数量为5了。
  begin
    ....
  end;
  count:=count+1;//这里才加1
end;
1
Helenxd
Katherinexd 非常谢谢,已解决~
3 年多之前 回复

如果你确定要使用3次错误的话,应该写成

 if count>=2 then
 begin
     .....
 end;
 count:=count+1;
0

var
hm_loginForm: Thm_loginForm;
pwdErrCount : Integer; //保存密码错误次数
implementation
uses hm_main,hm_user,hm_query,hm_info,hm_error1, hm_error2,hm_cpass,
hm_empnew, hm_help;
{$R *.dfm}
//清除上一次输入
procedure Thm_loginForm.FormShow(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
end;
//登录
procedure Thm_loginForm.SpeedButton1Click(Sender: TObject);
begin
//从用户清单表中提取信息
ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'select * from 用户清单 where 用户名 = '''+Edit1.Text+''' and 密码 = '''+Edit2.Text+'''';
ADOQuery1.Open;
//如果没有该用户
if ADOQuery1.RecordCount =0 then
begin
if pwdErrCount > 3 then
begin
ShowMessage('连续三次密码错误,系统退出!);
application.Terminate;
end;
pwdErrCount := pwdErrCount + 1 ;
ShowMessage('用户名或密码错误,请重新登录');
end
else//找到用户
begin
//记录用户信息
idright:=ADOQuery1.FieldByName('权限').AsInteger;
idnum:=ADOQuery1.FieldByName('编号').AsInteger;
//决定是否显示用户名
if CheckBox1.Checked then
begin
uname:='隐身登录';
end
else
begin
uname:=ADOQuery1.FieldByName('用户名').AsString;
end;

//取消登录,退出程序

procedure Thm_loginForm.SpeedButton2Click(Sender: TObject);
begin
hm_loginForm.Close;
end;
procedure Thm_loginForm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
begin
speedbutton1.Click;
end;
end;
end.


0

用个最简单的东西就好了嘛。
if ~<>~ then
begin
end;
end;
用这个格式套三遍就ok了。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!