Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Время работы программы


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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо