究竟哪里出错、
procedure Tdenglufrm.Button1Click(Sender: TObject);
var
username ,password :string;
times:integer;
begin
for times:=0 to 3 do
begin
if edit1.Text=''then
messagebox(denglufrm.handle,'请输入用户名','警告',mb_ok+mb_iconwarning)
else
if edit2.Text=''then
messagebox(denglufrm.handle,'请输入密码','警告',mb_ok+mb_iconwarning)
else
begin
username:=edit1.Text;
password:=edit2.Text;
with ADOQuerydl do
begin
close;
sql.clear;
sql.add('select * from xtglry where yh=');
sql.add(''''+username+''''+'and mm='+''''+password+'''');
open;
first;
if recordcount=1 then
begin
denglufrm.Hide;
MainFrm.Show;
end
else
messagebox(denglufrm.handle ,'请输入正确的密码','警告',mb_ok+mb_iconwarning);
edit1.Text:='';
edit2.Text:=''
end;
end;
end;
messagebox(denglufrm.handle ,'登陆超过三次,系统将退出','警告',mb_ok+mb_iconwarning);
application.terminate;
end;
我本意想做一个可以限制三次登录的窗体,但是出现的问题是当我第一次登录错误时,在清空用户名和密码就自动进入第二次,可惜我根本连输入用户名和密码的机会都没有就直接进行空用户空密码的判断,三次过后就自动关闭。究竟哪里出错了??
[解决办法]
你在一次登陆里,就进行三次密码验证,当然是不行的了.应该在这个click事件之外增加一个变量来记录登陆错误的次数.
[解决办法]
for time:=0 to 3 ... 这么做肯定不错啊,这样就是对每一次的输入作了3次验证,你应该使用一个计数器,可以使用一个全局变量,在form初始化的时候赋值i:=0;然后
if time<=3 then begin
end;....
在验证错误的时候i:=i+1;验证正确后i:=0;这样就达到你的目的了
[解决办法]
你那个TIMER,每次一开始都是0,你每次一点当然又是重新开始拉,TIMER得为全局变量才行的.这样每次自加一次就会保存上次自加