在DELPHI中我要写一段计时循环即在一段时间内(如10秒)完成一件事,我是这样
计时的:
currentTime:=GetTickCount() div 1000;
 //计时开始
  while((GetTickCount() div 1000)<(currentTime+10)) do
  begin
   //处理一件事
    ....
    ....
    ....
  end;
这样可以吗?不过使用起来不是很好。我想过用Timer,但它好象是每隔一段时间做
一件事,这与我这边程序的要求:在一段时间内(如10秒)完成一件事,好象不太
一样吧,应该怎么办呢?

解决方案 »

  1.   

    可以在timer1的timer事件里控制,间隔时间自定
    begin
    //开始
      timer1.Enabled := False;
    //做事
      ...
    //结束
      timer1.Enabled := Ture;
    end;
      

  2.   

    1: 定义两个全局变量:var VnowSecond,VbeginSecond: integer;
    2: 放置一个timer,interval设为1000;enabled 为false
    3: 在你要触发执行事件时给Vnowsecond设值;同时设 timer的enabled 为 true
    如:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    VbeginSecond0;
    VnowSecond:=VbeginSecond;
    timer.enabled:=true;
    end;4: 在timer的Ontimer事件中写下面代码:
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      while VbeginSecond+10>VnowSecond  do
       begin
       //The code what you want to do
       VnowSecond:=VnowSecond+1;
       end;
       timer1.Enabled:=false;end;
    end;
      

  3.   

    你只要在事件开始的时候打开timer控件,把执行时间设到10秒,结束后关闭timer就可以了
      

  4.   

    用Timer控件可以实现
    1、用Timer控件,将Timer的enable设为False,interval设为5s,
    2、设一个变量Time:integer;    Time:=0
    3、你要完成的操作代码,后面加上for i:=1 to 10 do
                                 begin  
                                 Time:=Time+1;
                                  if Time=2 then
                                  showmessage('时间到了哦‘)
                                 end;