![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Время работы программы
Troan_81 © (2007-03-20 20:59:00)Всем привет!
Мастера подскажите пожалуйста, как можно определить сколько времени было затрачено на выполнение какой-либо операции?
Например:
Старт: 21:00:00
Стоп : 22:00:00
Итого: 1 час
Asail (2007-03-21 15:55:00) [1]
> Вообщем моя шутка, так понял, не прошла :(
Пардон
RASkov (2007-03-21 15:53:00) [2]> [9] Asail (21.03.07 15:18)
Я о стабильности работы ОС. Вообщем моя шутка, так понял, не прошла :(
Asail (2007-03-21 15:18:00) [3]
> Столько винда не проживет :) с такими циклами.
Ну, почему - есть сервисы, которые бегут пока их не остановят. Иногда бывает нужно подсчитать время жизни такого сервиса.
Да и любое другое приложение может иметь такие циклы.
repeat
try
HandleMessage;
except
HandleException(Self);
end;
until Terminated;
ничего не напоминает?
homm (2007-03-21 13:09:00) [4]> Мастера подскажите пожалуйста, как можно определить сколько
> времени было затрачено на выполнение какой-либо операции?
var t: DWORD;
begin
T := GetTickCount();
// какая-либо операция
T := GetTickCount()-T;
Теперь Т - количество милисекунд, потраченых на выполнение, Т/1000 - количетво секунд, Т/(60*1000) - количество минут, и т.д.
RASkov (2007-03-21 13:09:00) [5]> то проблем не будет даже если цикл бежит дни, месяцы, а
> то, и годы :-)))
Столько винда не проживет :) с такими циклами.
:)
Asail (2007-03-21 12:22:00) [6]
> Вот будет здорово, если цикл начнется в 23:59, а закончится
> в 00:01 :)
var
OperBegin : TDateTime;
begin
OperBegin := Now;
. . .
StatusBar.Panels[1].Text := FormatDateTime('hh:ss:zzz', [Abs(Now-OperBegin)]);
Если так - то здорово уже не будет :-)
P.s. А если FormatDateTime('dd/mm/yyyy hh:ss:zzz', то проблем не будет даже если цикл бежит дни, месяцы, а то, и годы :-)))
Германн (2007-03-21 01:12:00) [7]Вот будет здорово, если цикл начнется в 23:59, а закончится в 00:01 :)
RASkov (2007-03-20 22:27:00) [8]> [3] Troan_81 (20.03.07 22:07)
StatusBar.Panels[0].Text := TimeToStr(Time);
OperBegin := DateTimeToTimeStamp(Now);
{Здесь размещается оператор, который выполняется в цикле}
OperEnd := DateTimeToTimeStamp(Now);
StatusBar.Panels[1].Text := Format('%d мсек.', [OperEnd.Time-OperBegin.Time]);
Troan_81 (2007-03-20 22:07:00) [9]Никто не знает, или никто не хочет мне помочь?
Troan_81 (2007-03-20 21:13:00) [10]Уважаемый Virgo_Style, спасибо за ответ!
Для меня оно очень большое значение имеет. Спасибо!
Первый оператор понятно - запоминает, точнее получает текущее время.
Второй тоже - как бы обновляет.
Но хотелось бы немного "живого"
Я немного не могу понять в следующем коде, совсем запутался:
var
OperBegin, OperEnd: TTimeStamp;
Total: LongWord;
begin
OperBegin := DateTimeToTimeStamp(Now); {запоминается момент начала операции}
{Здесь размещается оператор, который выполняется в цикле}
OperEnd := DateTimeToTimeStamp(Now); {запоминается момент окончания операции}
Total := OperEnd.Time - OperBegin.Time;
end;
Для этого использую компонент Statusbar1. В первую ячейку время старта, а во вторую результат. Что-то не получается сформатировать строчку. Помогите пожалуйста!
Virgo_Style (2007-03-20 21:06:00) [11]
StartTime:=Now;
...
FinishTime:=Now;