一個終止while語句的簡單問題(100分)

  • 主题发起人 主题发起人 chphyl
  • 开始时间 开始时间
C

chphyl

Unregistered / Unconfirmed
GUEST, unregistred user!
在我的程式中有一個while語句,這個while語句執行時間可能很長(有可能要幾分鐘),但是我想通過按某一個按鈕(Button1)來終止它的執行,但是不行,因為這個按鈕按都按不動,不知哪位大蝦能幫忙搞定. 原來在學pascal時,有
Repeat
.
.
until keypressed之類的用法,但是這里也不能用.
 
循环里加一句Application.ProcessMessage
 
Kang is right,this is because you must give the application
a chance to process your click message
 
需要截取系统的消息
使用Application.ProcessMessage即可,加到循环中。
 
我灌!
while CanQuitdo
begin
.....
..
application.processmessage;
end;

ON Button Click
CanQuit:=TRue;
:)
 
除了ProcessMessage以外,还应该有一个全局变量告诉它应该停止
 
定义一个全局量 continue

while continue and ...do
begin
...
application.processmessage
end;
procedure button1click(sender:Tobject);
begin
continue:=false;
end;

procedure form1create(sender:Tobject);
begin
contine:=true;
...
end;



 
呵呵,惯的好凶哦
 
告诉你:
利用线程对象Tthreadobject创建并启动另一线程
可以解决此问题。
 
加条件不就行乐。
 
ProcessMessage加一个全局变量完全可以搞定
不至于夸张得要用到多线程吧?
 
Application.ProcessMessage及多线程都可以解决你的问题。
 
是啊,不用那么复杂的
//初始化时
LoopCancel:=false;
//循环体
for i:=1 to 10000do
begin
......
if LoopCancel then
break;
Application.ProcessMessage;
end;

//Button的OnClick事件
LoopCancel:=true;
 
接受答案了.
 
后退
顶部