i:=0;
if edit1.Text = n then
begin
while i<3 do
begin
if edit2.Text = p then
begin
if d = '01' then
begin
form8.ShowModal ;
break;
end else
begin
form10.ShowModal ;
break;
end;
end else
begin
showmessage('密码不正确');
edit2.Clear ;
edit2.SetFocus ;
exit;
i:=i+1;
end;
end;
form4.Close ;
end else
begin
showmessage('用户不存在');
end;这段代码实现是的首先判断用户名的存在,然后判断密码的正确,3次密码不正确就关闭窗口,n 是用户名 ,p是密码,d是权限的控制。但是,我怎么也跳不出循环,密码输入3次后,还是在循环判断密码的正确性,代码里有错误吗?不过用户密码验证正确后,跳出窗口都是正确的(权限控制是正确的)。
if edit1.Text = n then
begin
while i<3 do
begin
if edit2.Text = p then
begin
if d = '01' then
begin
form8.ShowModal ;
break;
end else
begin
form10.ShowModal ;
break;
end;
end else
begin
showmessage('密码不正确');
edit2.Clear ;
edit2.SetFocus ;
exit;
i:=i+1;
end;
end;
form4.Close ;
end else
begin
showmessage('用户不存在');
end;这段代码实现是的首先判断用户名的存在,然后判断密码的正确,3次密码不正确就关闭窗口,n 是用户名 ,p是密码,d是权限的控制。但是,我怎么也跳不出循环,密码输入3次后,还是在循环判断密码的正确性,代码里有错误吗?不过用户密码验证正确后,跳出窗口都是正确的(权限控制是正确的)。
i:=i+1;
换个位置
i先自增
所以:i应该定义成全局变量i:integer=0;while i <3 do 改成 if i<3 thenexit;i:=i+1;改成i:=i+1;exit;