有一个数值,int型的。数值在不断增大,可以变化时间不是确定的。有可能每秒都在变,也有可能很久都不变,那么怎么计算出他的变化速度?也就是每小时增加了多少?

解决方案 »

  1.   

    此变量的最新值  减去  其初始值,  就是它的变化值;
    最后一次变化的时刻,减去初时时刻,就是变化耗费的时间;通过上面两个数字即可算出每小时变化多少。也就是说,只需关心初始值(及时刻)及最新一次变化的值(及时刻)。var
      I, IChanged, IInit : integer;
      Time1, Time2 : Cardinal;procedure TForm1.Button1Click(Sender: TObject);//开始计时并测试
    begin
      I := 123;       //赋初值
      IChanged := I;  //保存前一次变化值
      IInit := I;     //保存初值  Time1 := GetTickCount; //开始计时
      Timer1.Enabled := True;
      Timer2.Enabled := True; //开始测试
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      if I <> IChanged then
        begin
        Time2 := GetTickCount - Time1;
        Caption := Format('变量A正以每小时增值 %d 的速度变化',[(I-IInit)*((60*60*1000) div (Time2))]);
        IChanged := I;
        end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Timer1.Enabled := False;
      Timer1.Interval := 10;//这个数值越小,越精确。  Timer2.Enabled := False; //测试用的
      Timer2.Interval := 1000;
    end;procedure TForm1.Timer2Timer(Sender: TObject);//测试,每秒自增1,也就是速度为每小时增加3600
    begin
      Inc(I);
    end;