我要在timer里加for循环.但是一直造成系统当机.就是突然整个画面停了下来.
有没有什么解决的方法吗??
比如我往timer里加
for i:=0 to 10000 do
begin
label1.caption:=inttostr(i);
end;
为什么会这样呢??难道delphi还不如VB吗?

解决方案 »

  1.   

    10000个循环,每秒执行一次...
    //////////
    这根本就不会死机...
    你在循环里面做几个复杂一点的运算,再试试...
    //////////
    难道delphi还不如VB吗?
    //////////////////////
    还有这样的话以后就不要再说了
      

  2.   

    不知道你在OnTimer事件处理子程序中,有没有先Disable该Timer控件,退出该子程序时,再Enable该控件?
      

  3.   

    当timer中作太久事情时,会影响到窗口界面的UI事件的,也就是说窗口界面不处理消息了解决方法:
    1.在timer事件中,加入一些Application.ProcessMessage
    2.将timer事件中的代码,入在一个线程中执行另外,如果这样就认为delphi不如VB,那是很不厚道的说~~~
      

  4.   

    做循环最好+个Application.ProcessMessage
      

  5.   

    这个很正常,处理方式很简单1、Timer的Interval属性你如果设置的太短,小于FOR的10000次循环的时间,那么就会陷于死循环状态
    2、在这种情况下,Delphi是无法自动刷新的,必须要自己手动刷新
    for i:=0 to 10000 do
    begin
    label1.caption:=inttostr(i);
    label1.Refresh;
    end;
      

  6.   


    不知道你在OnTimer事件处理子程序中,有没有先Disable该Timer控件,退出该子程序时,再Enable该控件?
      

  7.   

    有的!!..Application.ProcessMessage但是加入这句没有用!.
    VB里我这样写
    for i= 30 to 40
    for j= 40 to 50
    if getpixel(dc,i,j)=0 then
    label1.caption="找到了"
    end if
    next
    next
    在DELPHI里我这样写
    for i:=30 to 40 do
    for j:=40 to 50 do
    if getpixel(dc,i,j)=0 then
    begin
    label1.caption:='找到了'
    end;
    end;我这句是对游戏使用的.当在循环的时候
    游戏的画面就会卡了一下.
      

  8.   

    Timer1.EnAble := false;
    for i:=30 to 40 do
    for j:=40 to 50 do
    if getpixel(dc,i,j)=0 then
    begin
    label1.caption:='找到了'
    end;
    Timer1.EnAble := true;试一下
      

  9.   

    1、Timer的Interval属性你如果设置的太短,小于FOR的10000次循环的时间,那么就会陷于死循环状态
    **********************
    这话 好象 很有道理的的说