![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как считать и хранить время работы программы? [D5, XP]
User9 © (2005-12-25 00:14:00)Когда программа начинает выполнять какое-то действие нужно запомнить время с точьностью до секунд, посчитать сколько времени действие выполнялось, записать время в лог и при следующем запуске делать тоже самое. Чтобы можно было всегда знать сколько времени работала программа. Как проще это сделать? TDateTime дает дату и время, а мне нужны и минуты с секундами. И как их складывать?
Кефир87 (2005-12-25 14:37:00) [1]
> Вот как-нибудь все это еще скомпоновать в строчки кода..
> .
// Начало программы
b_time := GetTickCount;
...
// Конец программы
p_time := GetTickCount - b_time;
// В p_time - кол-во мс работы программы
> Я еще слышал что значение возвращаемое GetTickCount в какой-
> то момент обнуляется и начинается с нуля снова.
Ну естественно. Число Cardinal тоже не бесконечное 8)
User9 (2005-12-25 14:14:00) [2]
> Разницу получают с помощью вычитания, а сумму с помощью
> сложения.
> а минус на минус дает плюс
Я про это слышал.
> есть функция GetTickCount, которая возвращает кол-во милисекунд
> работы виндовз.
Вот как-нибудь все это еще скомпоновать в строчки кода...
Я еще слышал что значение возвращаемое GetTickCount в какой-то момент обнуляется и начинается с нуля снова.
А как быть если общее время превысит год?
Кефир87 (2005-12-25 13:43:00) [3]Извините что влезаю 8) Но есть функция GetTickCount, которая возвращает кол-во милисекунд работы виндовз. Так вот если запомнить это значение в начале работы программы, а в конце отнять это значение от текущего, то узнаем сколько милисекунд работала программа 8) Надеюсь проблем с переводом из мс во что-то другое не будет 8)
alex_*** (2005-12-25 12:21:00) [4]а минус на минус дает плюс
Anatoly Podgoretsky (2005-12-25 09:30:00) [5]User9 (25.12.05 00:46) [5]
Разницу получают с помощью вычитания, а сумму с помощью сложения.
SEN (2005-12-25 01:42:00) [6]Может так?
var
T, T1: TDateTime;
procedure TForm1.Button1Click(Sender: TObject);
begin
T := Time;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption := TimeToStr(Time - T);
end;
User9 (2005-12-25 00:46:00) [7]Ну, например, нажал кнопку, получил текущее время Now, затем нажал кнопку еще раз, опять получил текущее время. Надо узнать сколько прошло времени между кликами и сохранить его. Затем повторить клики и сложить сохраненное время с вновь полученым.
Я не понимаю как его складывать и в каких переменных хранить.
Джо (2005-12-25 00:29:00) [8]
> функция Now возращает типа TDateTime
функция Now возращает значениетипа TDateTime
Джо (2005-12-25 00:27:00) [9]Разбей задачу на составляющие, а то не понятно, о чем ты спрашиваешь. Ну, вот, например, функция
Nowвозращает типаTDateTime, в котором хранится текущая на момент вызова отметка времени.
User9 (2005-12-25 00:19:00) [10]А как его в моем случае использовать? Я честно читал хельп, но без примера трудно.
Джо (2005-12-25 00:16:00) [11]
> TDateTime дает дату и время
TDateTime хранит даже миллисекунды.