Break退出循环为什么循环后面的代码不执行?(50分)

  • 主题发起人 主题发起人 meng555
  • 开始时间 开始时间
M

meng555

Unregistered / Unconfirmed
GUEST, unregistred user!
我有段代码类似这样:
for k:=1 to 100000 do
begin
。。。。。
if StopCal then Break;//点停止按钮退出。
。。。。。
end;
showmessage('已退出');
Timer1.enabled:=false;
----------------------------------
问题:为什么我停止了后,showmessage不执行?好象停止什么也不执行了,我还要停止计时器,让“停止”按钮变灰等,,都执行不了。这是为什么啊???
退出循环后,跑到哪去了,我跟踪发现没有执行。为什么有时会跳过去?
 
跟语句关系不大,
我觉得你实现的方法可能有问题,你具体说下你要实现什么功能。
 
你的For循环在哪个线程中?
在同一个线程中(比如在主线程中),当程序进入循环时,对消息的处理并不是及时的.
你上面代码的现象是什么样子?
 
如果你用 Timer 监测按钮是否按下并设置 StopCal, 就有可能是 for 循环和 Timer 的逻辑有问题,那你最好在 if 语句上打个断点,按下按钮后看它怎么走。
 
对于这样的语句最好不用循环,改用while
 
Application.ProcessMessages; //加上这句
if StopCal then Break;//点停止按钮退出。
 
看来StopCal一直都是false!
 
我知道,因为你把break的B大写了,所以它退出大的,记得要小写呀[:D][:D][:D]
 
to kkyy
巨汗
 
和大小写没有关系。

procedure TForm1.Button1Click(Sender: TObject);
var
i, j, k: integer;
begin
i := 0;
j := 0;
k := 0;
for i := 0 to 10 do
begin
j := j+1;
if j > 2 then Break;
end;

Application.ProcessMessages; //会执行
k := j+1; //不会执行
ShowMessage('aaaa'); //会执行
end;
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
758
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部