Советы по Delphi



Переменная времени


Используйте переменную типа TDateTime.

    procedure TForm1.XXXXXXXClick(Sender: TObject);
var StartTime, EndTime, ElapsedTime :TDateTime;
begin
StartTime := Now; {Здесь поместите свой код} EndTime := Now; ElapsedTime := EndTime - StartTime; Label1.Caption := TimeToStr(ElapsedTime); end;

{теперь все это в памяти, но в нашем случае это хорошее место. }
var
before, after, elapsed : TDateTime; Ehour, Emin, Esec, Emsec : WORD; ...

before := now;

some_process();

after := now;
elapsed := after - before;

decodetime(elapsed, Ehour, Emin, Esec, Emsec);

теперь Ehour:Emin:Esec.Emsec будет содержать истекшее время.

Это то, что я хотел. fStartWhen содержит дату/время начала процесса. (fStartWhen := NOW). OneSecond - константа, определенная как 1/24/3600. (Да, эта программа может выполняться для нескольких дней. Но даже самый быстрый P5 может не справиться с большим количеством данных!)

    PROCEDURE        TformDBLoad.UpdateTime;
VAR        Delta        :TDateTime

BEGIN
fLastUpdate := NOW IF ABS( fStartWhen - fLastUpdate ) < OneSecond THEN EXIT Delta := fLastUpdate - fStartWhen doElapsedTime.Caption := FORMAT( '%1. дней из %s', [INT(Delta),FORMATDATETIME('hh:nn:ss', FRAC(Delta))] )
END;

[001417]




Содержание  Назад  Вперед