高手們;
你們好這是我寫的代碼;我想達到的目的,登入系統的時候,如果用戶名和密碼錯誤連續三次錯誤,系統就自動註銷.能不能幫我指教下這些代碼那需要改正才正確,謝謝!
procedure TForm1.BitBtn1Click(Sender: TObject);
var
 i:Integer;
 czymc:string;
 mm:Boolean;
begin
  i:=0;
  with ADOQuery1 do
   begin
   Close;
   SQL.Clear;
   SQl.Add('Select * from UserTable where(Username=:a)and(Password=:b)');
   Parameters.ParamBYName('a').Value:=Trim(Edit1.Text);
   Parameters.ParamBYName('b').Value:=Trim(Edit2.Text);
   Open;
  end;
   if ADOQuery1.RecordCount>0 then
    begin
    czymc:=ADOQuery1.FieldByName('UserName').AsString;
    mm:=true;
    Edit1.Clear;
    Edit2.Clear;
    Close;
   end
    else
     begin
     if i<3 then
       begin
        Application.MessageBox('用戶名稱和密碼不正確,需要重新輸入?&#63541;.','提示',64);
        Edit1.Clear;
        Edit2.Clear;
        Edit1.SetFocus;
        Inc(i);
       end
       else         begin
         i:=i+1;
         Application.MessageBox('對不起,你不能使用.','提示',64);
         Application.Terminate;
         end;
    end;
end;

解决方案 »

  1.   

    i := 0;
    while i < 3 do
    begin
       with ADOQuery1 do
       begin
       Close;
       SQL.Clear;
       SQl.Add('Select * from UserTable where(Username=:a)and(Password=:b)');
       Parameters.ParamBYName('a').Value:=Trim(Edit1.Text);
       Parameters.ParamBYName('b').Value:=Trim(Edit2.Text);
       Open;
       end;
       if ADOQuery1.RecordCount>0 then
         break
       else
       begin
         Application.MessageBox('用戶名稱和密碼不正確,需要重新輸入?&#63541;.','提示',64);
         Edit1.Clear;
         Edit2.Clear;
         Edit1.SetFocus;
         Inc(i);
       end;
    end;if i>= 3 then
    begin
      Application.MessageBox('對不起,你不能使用.','提示',64);
      Application.Terminate;
    end
    else
      Application.MessageBox('成功.','提示',0);
      

  2.   

    chuchenggang()  謝謝你的修改,可能你還沒有明白我的意思.你為我修改的那個效果還是第一次輸入錯誤用戶名和密碼效果是循環3次'你輸入的不正確,請重新輸入,然後點擊,自動註銷了
      我的意思 ;
        第一次輸入用戶名或則密碼一項,提示'對不起,你不能使用'.系統不能註銷
        第二次輸入用戶名或則密碼其中一個錯誤,提示'對不起,你不能使用'.系統不註銷
        第三次的時候在輸入錯誤.系統才自動註銷..
        如果一次就等入正確那麼確定直接進入主介面.謝謝!
    能不能在幫我修改下了 
         因為我也用過循環語句區嘗試和你那個效果一樣.
      

  3.   

    i:=i+1;
    if i = 3 then
    begin
      Application.MessageBox('對不起,你不能使用.','提示',64);
      Application.Terminate;
    end
    else
    beginend;
      

  4.   

    begin  with ADOQuery1 do
       begin
        Close;
        SQL.Clear;
        SQl.Add('Select * from UserTable where(Username=:a)and(Password=:b)');
        Parameters.ParamBYName('a').Value:=Trim(Edit1.Text);
        Parameters.ParamBYName('b').Value:=Trim(Edit2.Text);
        Open;
       end;
        if ADOQuery1.RecordCount>0 then
        i:=0;
          while i<2 do       begin
            Application.MessageBox('蚚靡想睿躇徨祥淏復,剒猁笭陔?&#63541;?','枑尨',64);
            Edit1.Clear;
            Edit2.Clear;
            Edit1.SetFocus;
            Inc(i);
            Exit;
           end;
          if i<2 then
           begin
             Application.MessageBox('腎?傖髡.','枑尨',0);
             Form2:=TForm2.Create(nil);
             Form2.Show;
             Form1.Hide;
           end;
            begin
             i:=i+1;
             Application.MessageBox('&#62907;祥&#63232;,斕祥夔妏蚚.','枑尨',64);
             Application.Terminate;
            end;
    end;
    原始密碼不能進入介面了
      

  5.   

    你的counter得定义在click事件外面阿,不然每次click都初始化,那不是每次都是第一次。。-__-!!
      

  6.   

    搞定;
    begin
      with ADOQuery1 do
       begin
        Close;
        SQL.Clear;
        SQl.Add('Select * from UserTable where(Username=:a)and(Password=:b)');
        Parameters.ParamBYName('a').Value:=Trim(Edit1.Text);
        Parameters.ParamBYName('b').Value:=Trim(Edit2.Text);
        Open;
       end;
        if ADOQuery1.RecordCount>0 then
          begin
           czymc:=ADOQuery1.FieldByName('Username').AsString;
           m:=True;
           Application.MessageBox('Success!!','Hite',64);
           Edit1.Clear;
           Edit2.Clear;
           Form2:=TForm2.Create(nil);
           Form2.Show;
           Form1.Hide;
           Form1.Free;
          end
         else
           begin
            if i<3 then
            begin
            Application.MessageBox('蚚靡想睿躇徨祥淏復,剒猁笭陔?&#63541;?','枑尨',64);
            Edit1.Clear;
            Edit2.Clear;
            Edit1.SetFocus;
            Inc(i);
            end
            {begin
             Application.MessageBox('腎?傖髡.','枑尨',0);
             Form2:=TForm2.Create(nil);
             Form2.Show;
             Form1.Hide;
           end;}
              else
              begin
             Application.MessageBox('&#62907;祥&#63232;,斕祥夔妏蚚.','Hite!',64);
             Application.Terminate;
             end;
         end;
    end;