如何用一个方法,如按mouse 或其他 随时中断一个死循环,(repeat....until false ; ) ????(100分)

  • 主题发起人 主题发起人 allen72
  • 开始时间 开始时间
在执行该循环时,按mouse 键即发送一个消息进入消息队列,此时循环不执行直到处理
该消息为止,处理按mouse 的消息事件!
 
是我想错了吗?这个问题很简单啊,用个全局的Boolean变量不就得了?
repeat里面判断,按mouse 或其他时把这个Boolean变量:= False;
然后Break就得了.

repeat....until false
^^^^^^^或者直接把这个换成那个全局的Boolean变量不就得了?

是不是我理解错你的意思了?
 
要终止一死循环,必须在循环中做相关处理,如截获消息、事件等,象如下循环:
private
{ Private declarations }
StopFlag:Boolean;
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
StopFlag:=True;
while StopFlag do
begin
i:=i+1;
Label1.Caption:=IntToStr(i);
Application.ProcessMessages;
end;

end;
以下是终止上面循环的函数
procedure TForm1.Button2Click(Sender: TObject);
begin
StopFlag:=False;
end;
 
全局变量cando,为布尔型
button,onclick:cando:=false;
循环中:
repeat
....
if not cando then break;
Application.ProcessMessages;
until false;//你说的恐怕就是你使用false这个常数形成死循环。
你可以改成
repeat
...
Application.ProcessMessages;//这句必须要用
until not cando;
 
你的死循环必须是在一个线程中运行才行。
方法也不难,看一看以前的关于线程的问答就可以了。
 
g:Slong , tanglu
 
多人接受答案了。
 
后退
顶部