不使用线程,怎样在一个函数未执行完时按“退出”键退出函数?对函数运行效率的影响大吗?

解决方案 »

  1.   

    Application.ProcessMessages;试一下?
      

  2.   

    to jsandy(江苏安迪):
    谢谢,等待中... ^_^
      

  3.   

    private
        CanContinue: Boolean;procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
    begin
      for I := 0 to 640000 do
      begin
        if not CanContinue then Exit;
        Application.ProcessMessages;//在合适的地方加上这句,也可以放在一个TTimer的事件中
        Edit1.Text := IntToStr(I);
        Edit1.Update;
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      CanContinue := False;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      CanContinue := True;
    end;—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  4.   

    设置全局变量FuncGoOn:Bool;在你的函数代码中,最外层套一个while While Not FuncGoOn Do
       //你原来的程序
     End按'退出',FuncGoOn:=False;
      
      

  5.   

    上面修改,修改,设置全局变量FuncGoOn:Bool;在你的函数代码中,最外层套一个while While FuncGoOn Do
       //你原来的程序
     End按'退出',FuncGoOn:=False;
      

  6.   

    使用Application.ProcessMessages可以实现,但对执行效率有一定的影响,有没有更好的方法?- 得寸进尺 :)