procedure TForm1.Button1Click(Sender: TObject);
begin
r:= false;
name:=form1.edit1.text;
password:=form1.edit2.text;
for i:=1 to 3 do
if (name='sa')and(password='nmdata') then
begin
r:= true;
form1.Hide;
form2.Show;
break
end
else
begin
showmessage(password);
form1.Show;
form1.edit1.setfocus;
break
end;
end;
end.
就是只有三次登录机会,如果都输入错误,将关闭窗口,如何做?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     inc(i);
     if i<=3 then begin end
     else begin
       showmessage('你已输入密码超过3次');
       from1.close;//自动退出系统
     end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
     i:=0;
    end;end.
      

  2.   

    使用计数器来实现,错误在于,不管你操作几次,都是执行3次循环(错误就直接退出)
    计数器变量应该是全局变量每单击一次,记录一次,var i:integer=1; i:=i+1;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    r:= false;
    name:=form1.edit1.text;
    password:=form1.edit2.text;
    for i:=1 to 3 do  //F5设置断点后,F8单步执行,鼠标悬浮在变量位置,察看变量的值
    if (name='sa')and(password='nmdata') then
    begin
    r:= true;
    form1.Hide;
    form2.Show;
    break
    end
    else
    begin
    showmessage(password);
    form1.Show;
    form1.edit1.setfocus;
    break
    end;
    end;
      

  3.   

    从这个地方看:
    for i:=1 to 3 do
    if (name='sa')and(password='nmdata') then
    begin
    r:= true;
    form1.Hide;
    form2.Show;
    break
    end
    else
    begin
    showmessage(password);
    form1.Show;
    form1.edit1.setfocus;
    break
    end;
    这样你不管密码是否正确的话都会执行同样三次的判断!这样试试看
    全局变量:  integer:i;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     i:=0;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if (name='sa')and(password='nmdata') then
      begin
        r:= true;
        form1.Hide;
        form2.Show;
        break//(这句好象没有必要!)
      end
      else
      begin
        i:=i+1;
        if i>=3 then
        begin
          MessageDlg('只能登陆三次!程序终止!','错误',mterror,[MBOK],0);
          close();
        end;
      end;
    end;
      

  4.   

    晕倒~你考虑考虑你程序的流程~
    程序只输入了一次(click事件发生)
      接着呢?循环三次(同一个比较简单的重复三次)
    这样当然没用~你应该纪录用户提交的次数,也就是buttonclick的次数(如果超过3次就退出程序)即设置一个窗体级变量,没buttonclick一次就变量++;具体还是自己写代码吧~这样好一些~
      

  5.   

    启动,将 EdtPwd 的 Tag 置为 0。验证一次,Inc Tag,Tag = 3,Terminate