我有两个事件A和B,设定一个间隔时间X秒,重复执行A事件,结束后间隔X秒在重新执行A事件。当执行Y次后,在执行B事件1次,然后在重复执行A事件。   这个和间隔时间设定有关系,现在大脑有点笨,没有想到怎么做效率好些。请大家帮忙写一下代码或者算法,先谢谢了

解决方案 »

  1.   

    var ACount:IntegerTimA:
    ...
    Inc(ACount);
    if ACount=XXXX then begin
      TimB.Enable:=True;
      ACount:=0;
    end;
    ...TimB:
    ....
    TimB.Enable:=False;
      

  2.   

    timerA,timerB
    x,m:integer;
    timerA.enable:=true;
    m:=m+1;if m=y then
    begin
    timerB.enable:=true;
    m:=0;
    end;
      

  3.   

    var
      iCount : Integer;
    procedure ???.FormCreate(Sender: TObject);
    begin
      iCount := 0;
      Timer1.Enabled := False;
      Timer1.Interval := X * 1000;
      Timer1.Enabled := True;
    end;procedure ???.Timer1Timer(Sender: TObject);
    begin
      Timer1.Enabled := False;
      A事件;
      inc(iCount);
      if iCount >= Y then
      begin
        B事件;
        iCount := 0;
      end;
      Timer1.Enabled := True;
    end;
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Timer1: TTimer;
        Memo1: TMemo;
        procedure Timer1Timer(Sender: TObject);
      private
        procedure EventA();
        procedure EventB();
      public
        iCount:integer;
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.EventA;
    begin
      Memo1.Lines.Add('执行EventA');
      Inc(iCount);
    end;procedure TForm1.EventB;
    begin
      Memo1.Lines.Add('执行EventB');
      iCount:=0;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      if iCount<10 then
         EventA()
      else
         EventB();
    end;end.
      

  5.   

    Timer.interval:=1000;这个是Timer控件执行的时间
      

  6.   

    我明白他的意思了,他是要a事件结束后才计算那个x妙,如果用定时器,就会间隔x-a(a事件的执行时间了)。那么就用线程,在a执行完成后,sleep(x)应该就可以了吧。:),多少次执行后执行b,参考定时器的做法。
      

  7.   

    Timer 事件,就是这么简单