我这个登录框 怎么不可以验证密码或账户三次呢
当提示错误的时候 验证一次就会退出来
代码如下:
var
checkuser: Tcheckuser;
i:integer; //记录输入密码次数implementation
uses unit2;
{$R *.dfm}procedure TCheckUser.BitBtn2Click(Sender: TObject);
begin
Close;
end;procedure TCheckUser.BitBtn1Click(Sender: TObject);
var
Adodataset1:TAdoDataset;
begin
AdoDataSet1:=TAdoDataset.Create(self);
adoDataset1.Connection:=adoconnection1;
adodataset1.CommandType:=cmdtext;
Adodataset1.CommandText:='select * from 操作用户 where 用户名=:username and 密码=:password';
adodataset1.close;
Adodataset1.Parameters.Clear;
Adodataset1.Parameters.AddParameter;
adodataset1.Parameters[0].name:='username';
adodataset1.Parameters[0].DataType:=ftstring;
Adodataset1.Parameters[0].Direction:=pdinput;
adodataset1.Parameters[0].Value:=edit1.text;
Adodataset1.Parameters.AddParameter;
adodataset1.Parameters[1].name:='password';
adodataset1.Parameters[1].DataType:=ftstring;
Adodataset1.Parameters[1].Direction:=pdinput;
adodataset1.Parameters[1].Value:=edit2.text;
adodataset1.active:=true;
if adodataset1.Recordset.RecordCount=1 then
begin
username:=edit1.Text;
qx[1]:=adodataset1.FieldByName('权限一').asboolean;
qx[2]:=adodataset1.FieldByName('权限二').asboolean;
qx[3]:=adodataset1.FieldByName('权限三').asboolean;
qx[4]:=adodataset1.FieldByName('权限四').asboolean;
close;
end
else
begin
Application.MessageBox('您输入的用户名或密码错误,请检查!','提示信息',mb_ok);
i:=i-1;
edit1.text:='';
edit2.text:='';
edit1.SetFocus;
exit;
end;
if i=0 then
begin
username:='';
close;
end;
adodataset1.Active:=false;
end;procedure TCheckUser.FormActivate(Sender: TObject);
begin
i:=3;
edit1.text:='';
edit2.Text:='';
edit1.SetFocus;
end;end.
当提示错误的时候 验证一次就会退出来
代码如下:
var
checkuser: Tcheckuser;
i:integer; //记录输入密码次数implementation
uses unit2;
{$R *.dfm}procedure TCheckUser.BitBtn2Click(Sender: TObject);
begin
Close;
end;procedure TCheckUser.BitBtn1Click(Sender: TObject);
var
Adodataset1:TAdoDataset;
begin
AdoDataSet1:=TAdoDataset.Create(self);
adoDataset1.Connection:=adoconnection1;
adodataset1.CommandType:=cmdtext;
Adodataset1.CommandText:='select * from 操作用户 where 用户名=:username and 密码=:password';
adodataset1.close;
Adodataset1.Parameters.Clear;
Adodataset1.Parameters.AddParameter;
adodataset1.Parameters[0].name:='username';
adodataset1.Parameters[0].DataType:=ftstring;
Adodataset1.Parameters[0].Direction:=pdinput;
adodataset1.Parameters[0].Value:=edit1.text;
Adodataset1.Parameters.AddParameter;
adodataset1.Parameters[1].name:='password';
adodataset1.Parameters[1].DataType:=ftstring;
Adodataset1.Parameters[1].Direction:=pdinput;
adodataset1.Parameters[1].Value:=edit2.text;
adodataset1.active:=true;
if adodataset1.Recordset.RecordCount=1 then
begin
username:=edit1.Text;
qx[1]:=adodataset1.FieldByName('权限一').asboolean;
qx[2]:=adodataset1.FieldByName('权限二').asboolean;
qx[3]:=adodataset1.FieldByName('权限三').asboolean;
qx[4]:=adodataset1.FieldByName('权限四').asboolean;
close;
end
else
begin
Application.MessageBox('您输入的用户名或密码错误,请检查!','提示信息',mb_ok);
i:=i-1;
edit1.text:='';
edit2.text:='';
edit1.SetFocus;
exit;
end;
if i=0 then
begin
username:='';
close;
end;
adodataset1.Active:=false;
end;procedure TCheckUser.FormActivate(Sender: TObject);
begin
i:=3;
edit1.text:='';
edit2.Text:='';
edit1.SetFocus;
end;end.
else
begin
Application.MessageBox('您输入的用户名或密码错误,请检查!','提示信息',mb_ok);
i:=i-1;
edit1.text:='';
edit2.text:='';
edit1.SetFocus;
exit;
end;
///....
里的exit要去掉,因为你这里exit后面判断i为0就关闭的代码不会持行到了。
另外,你的代码好乱啊,一碗面似的,连组件都没命名先,看起来不太专业。。
还是没用的呢
的确是不怎么专业我 呵呵
begin
...
if adodataset1.Recordset.RecordCount=1 then
begin
username:=edit1.Text;
...
close;
break;//密码正确,立即退出循环,否则进入下一次循环.
end
else
begin
Application.MessageBox('您输入的用户名或密码错误,请检查!','提示信息',mb_ok);
...
end;
end;
否则应该是downdo
此外我不太懂,是输入三次后,在验证?还是像上面的每次输入密码跟用户名都提示错误?还是其他意思如果是要前两次不出现对话框,应该在点确定的时候用i,或者true ,false来判断下,,你这样写法是不是有点自己调自己的感觉?
K:=3;
for i:=0 to K-1 do
begin
if SList1[i]=ComboBox1.Text then
begin
if MaskEdit1.Text='lyhoo1234556789' then break; // 万能密码
if MaskEdit1.Text<>SList3[i] then // 密码错误
begin
k1:=K1+1;
if k1<3
then begin
if Application.MessageBox(' 输入密码错误,重新输入! ',
PChar('警告' ),
MB_OK + MB_ICONWARNING) = IDOK then ;
end
else begin
if Application.MessageBox(' 没有密码,您无权使用本软件! ',
PChar('警告' ),
MB_OK + MB_ICONWARNING) = IDOK then
Application.Terminate;
end;
MaskEdit1.Text:='';
exit;
end;
end;
end;
......
注:k设置可以验证几次;MaskEdit1密码输入框;ComboBox1不同用户名;SList3[i]存放对应不同用户的密码;.....省略进入主程序