delphi如何控制登陆失败的次数
要求:当输入的用户名或密码错误时,提示“用户名或密码错误,你还剩3次登陆机会!” 再错就提示“用户名或密码错误,你还剩2次登陆机会!”......最后当3次输入的密码都不正确时退出系统!
我给出登陆代码如下! 大家帮我改下!谢谢!!!
[解决办法]
1 i 不要为局部变量
2
var
i:integer;
procedure TLogin.SpeedButton1Click(Sender: TObject);
var
m:string;
begin
i ;=0;
with Data.ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add( 'select * from userinfo where 帐号= ' ' '+RzEdit1.text+ ' ' ' and 密码= ' ' '+RzEdit2.text+ ' ' ' ');
open;
end;
if Data.ADOQuery1.IsEmpty then
begin
i ;=1+1;
// for i:=0 to 3 do
// begin
if 3-i> 0 then
begin
m:=inttostr(3-i);
showmessage( '帐号或密码有误,你还剩 ' ' '+m+ ' ' '次登陆机会! ');
RzEdit2.Clear;
RzEdit2.SetFocus;
break;
//Continue;
end
else
begin
showmessage( '对不起,系统将终止,请先核查您有没有此权限! ');
application.Terminate;
end;
end;
end
else
begin
vNo:=Data.ADOQuery1.FieldByName( '代号 ').AsString;
vloginname:=data.ADOQuery1.fieldbyname( '姓名 ').AsString;
vstatus:=data.ADOQuery1.fieldbyname( '权限 ').AsString;
vpost:=data.ADOQuery1.fieldbyname( '职位 ').AsString;
vgroup:=data.ADOQuery1.fieldbyname( '部门 ').AsString;
xtwh_grzlsz.RzEdit4.Text:=vNO;
MainForm.RzStatusPane1.Caption:= '代号: '+vNo;
MainForm.RzStatusPane2.Caption:= '姓名: '+vloginname;
MainForm.RzStatusPane3.Caption:= '权限: '+vstatus;
MainForm.RzStatusPane4.Caption:= '职位: '+vpost;
MainForm.RzStatusPane5.Caption:= '部门: '+vgroup;
bdgl_kjbd.RzLabel5.Caption:=vgroup;
bdgl_kjbd.RzLabel7.caption:=vloginname;
self.RzEdit1.Clear;
self.RzEdit2.Clear;
//ModalResult:= mrOK;
self.Hide;
MainForm.Show;
hdgl_sjtx.RzBitBtn1.Click;
if vstatus= '普通用户 ' then
begin
mainform.N42.Enabled:=false;
mainform.N13.Enabled:=false;
mainform.N16.Enabled:=false;
mainform.N40.Enabled:=false;
mainform.N41.Enabled:=false;
end
else
begin
mainform.N42.Enabled:=true;
mainform.N13.Enabled:=true;
mainform.N16.Enabled:=true;
mainform.N40.Enabled:=true;
mainform.N41.Enabled:=true;
end;
end;
end;
试一下 没测试
[解决办法]
利用窗口上某控件的tag属性,记录登陆失败的次数
或者设置单元变量记录登陆次数
[解决办法]
if Data.ADOQuery1.IsEmpty then
begin
Inc(FTimes); //定义个private变量,记录错误登录次数;
if FTimes < 3 then
begin
m := IntToStr(3 - FTimes);
showmessage( '帐号或密码有误,你还剩 ' ' '+m+ ' ' '次登陆机会! ');
RzEdit2.Clear;
RzEdit2.SetFocus;
end
else
begin
showmessage( '对不起,系统将终止,请先核查您有没有此权限! ');
application.Terminate;
end;
end;
我想这样应该可以实现输入错误的显示
[解决办法]
将技术变量i设为全局变量,就是定义到登陆按钮时间外部;登陆按钮时间内些这样的代码
inc(i);
.........
.........
begin
showMessage(‘密码错误,请重新输入! ');
if i> =3 then
begin
showMessage(‘三次密码错误,退出系统! ');
Close;
query1.CloseDatabase(session.FindDatabase( 'databasename '));
Application.Terminate;
end;
end
.........