for循环的2个问题

yplin 2006-11-23 09:50:26
1、
for i := 0 to 3 do //下断点
begin
……//n行
for j := 0 to 3 do
begin
//n行
end;
Gauge1.Progress := k + 1; //显示进度
Application.ProcessMessages; //注意这里
end;

The Issue :刚开始的时候,进度显示始终在1和0中跳动,晕了半天,后来下断点,发现i的值居然始终是0!去掉Application.ProcessMessages后居然……靠……正常了!!?请问高人这是为什么?

2、
为了验证以上的问题,我又开了一个delphi(7)做实验,很简单的循环
for i := 0 to 3 do //断点
for j := 0 to 3 do

就两行,第一次运行,跟踪i的值,第 1 次循环, i = 4,第2次,i = 3, ……,至此,彻底晕菜……
第二次运行,i的值开始正常,0、1、2、3,以后几次运行再没出现第一次的情况,这是为什么?

3、没喝酒,没吸粉,没写童话,只想知道是不是只有我一个人有过这种情况?
...全文
233 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangshi99 2006-11-24
  • 打赏
  • 举报
回复
喝点酒,吸点粉就知道怎么回事了~~~~~~~~~~~~
Comer 2006-11-24
  • 打赏
  • 举报
回复
就两行,第一次运行,跟踪i的值,第 1 次循环, i = 4,第2次,i = 3, ……,至此,彻底晕菜……


这个我也遇到过,搞不清啥意思
  • 打赏
  • 举报
回复
如果你用了Indy组件,要么在线程中使用,要么加一个IdAntiFreeze防止阻塞主线程。
用Application.ProcessMessages是没用的。
fuxzhifeick 2006-11-23
  • 打赏
  • 举报
回复
N行也不多,就是一个IDHTTP的get和except,估计是IDHTTP等待回应的时间太长,期间Application.ProcessMessages就干了点小活
  • 打赏
  • 举报
回复
没有发现这种问题。
估计是你那n行造成的。:)
yplin 2006-11-23
  • 打赏
  • 举报
回复
上面k+1 写错了,是i+1 (Gauge1.Progress := k + 1; //显示进度)

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧