Используйте переменную типа 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; | |