for  n:=0  to  4  do  
       begin  
       postthread.Create;  (线程单独一个单元)  
       end;  
创建5个线程,n是全局变量,传到线程中用.  
我在线程中中断后看,线程到是执行了5次,但为什么n的值永远都是5呢?请问应该怎么办?

解决方案 »

  1.   

    当然,N=5后,条件结束,代码继续运行下去而且你的想法本来就是逻辑不合理的http://lysoft.7u7.net
      

  2.   

    那请问应该怎么让程序,一到postthread.Create就开一个线程执行
      

  3.   

    线程里增加一个变量用来记录n就行了。
    增加类函数
    类:postthreadprivate
        n:integer;procedure SetN(nIn:integer);
    begin
        n:=nIn;
    end;function GetN:integer;
    begin
        Result:=n;
    end; for  n:=0  to  4  do  
    begin  
        postthread.Create;  (线程单独一个单元)  
        postthread.SetN(n);
    end;
      

  4.   

    for  n:=0  to  4  do  
    begin  
        postthread.Create;  (线程单独一个单元)  
        postthread.SetN(n);
        postthread.resume;/////////////执行线程。
    end;
      

  5.   

    to 201fgq (七彩云南) 
    n是for的循环变量,根据delphi对for语句循环变量的定义,n只能被访问,不能在循环中修改,也不能通过其他方法修改,包括你的线程,在for结束后,n将保存最后一个值,也就是你的结束条件,在这是5,及当n为4时继续,当n为5时,退出for,
      

  6.   

    也就是说不管你的线程结束不结束,for循环结束后,n一定是5,除非你半路用break提前退出for循环,即使你提前退出for,而n也会保留n在for中的最后一个值