要终止一死循环,必须在循环中做相关处理,如截获消息、事件等,象如下循环:
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;