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、没喝酒,没吸粉,没写童话,只想知道是不是只有我一个人有过这种情况?

解决方案 »

  1.   

    上面k+1 写错了,是i+1 (Gauge1.Progress := k + 1;  //显示进度)
      

  2.   

    N行也不多,就是一个IDHTTP的get和except,估计是IDHTTP等待回应的时间太长,期间Application.ProcessMessages就干了点小活
      

  3.   

    如果你用了Indy组件,要么在线程中使用,要么加一个IdAntiFreeze防止阻塞主线程。
    用Application.ProcessMessages是没用的。
      

  4.   

    就两行,第一次运行,跟踪i的值,第 1 次循环, i = 4,第2次,i = 3, ……,至此,彻底晕菜……
    这个我也遇到过,搞不清啥意思