![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вычислить разницу во времени [D7, WinXP]
Draught © (2005-08-31 17:44:00)Всем доброго времени суток...
Вроде задача простая - перед выполнением процедуры запомнить время, после выполнения запомнить, затем подсчитать разницу и показать результат, одно НО, хотелось бы точность не до секунды получить, а еще 3 знака после секунды.
Пробовал покрутить с двумя переменными
var start_time,stop_time:int64
...
begin
...
start_time:=GetCurrentTime;
while ...;
stop_time:=GetCurrentTime;
...
Showmessage(IntToStr(Start_time-stop_time)+' times');
...
end;
в итоге получаю просто число "1547"- его можно каким-нибудь образом представить в виде часов, минут, секунд и миллисекунд?
menart (2005-08-31 19:56:00) [1]Извеняюсь
var
d:TDateTime;
begin
d:=now;
...
showmessage(formatDateTime('hh:mm:ss: zzz',(now-d)));
menart (2005-08-31 19:41:00) [2]
var
d:TDateTime;
begin
d:=now;
...
showmessage(formatDateTime('hh:mm:ss:ms',(now-d)));
menart (2005-08-31 19:41:00) [3]var
d:TDateTime;
begin
d:=now;
...
showmessage(formatDateTime('hh:mm:ss:ms',(now-d)));
Draught (2005-08-31 19:29:00) [4]всем спасибо...
в итоге все-таки пришлось делать так:
hour:=((stop_time-start_time) div (3600 * 999)) mod 24;
min:=((stop_time-start_time) div (60 * 999)) mod 60;
sec:=((stop_time-start_time) div 999) mod 60;
mlsec:=(stop_time-start_time) mod 999;
WST (2005-08-31 19:18:00) [5]d := round((ss / 86400)-0.5);
h := round((ss / 3600)-0.5)-d*86400;
m := round((ss / 60)-0.5)-((d*86400)+(h*60));
s := round(ss-((d*86400)+(h*3600)+(m*60)));
по очереди - d - дней, h - часов, m - минут, s - секунд, ss - твои полученние цифры путем ss := GetTickCount;
Вроде так. Enjoy!
Jeer (2005-08-31 18:58:00) [6]Reindeer Moss Eater © (31.08.05 17:45) [1]
Квант - 10-20 ms
Человек хочет три знака после секунды, т.е. 1 ms.
QueryPerformanceCounter
RDTSC
Fay (2005-08-31 18:47:00) [7]Antonn © (31.08.05 18:14) [5]
zzz
Antonn (2005-08-31 18:14:00) [8]formatdatetime('hh:nn:ss:zzzz', now)
Reindeer Moss Eater (2005-08-31 18:01:00) [9]миллилитр = одна тысясная литра.
миллисекунда - одна тысячная секунды.
Draught (2005-08-31 17:59:00) [10]Хорошо, как вычислять милисекунды я понял, GetCurrentTime тоже неплохо справлялся с этим :)
Как теперь перевести число в часы, минуты, секунды и милисекунды??? Есть такая функция в делфи??? Или ее нужно самому создавать???
Draught (2005-08-31 17:46:00) [11]ошибся немного...
showmessage(IntToStr(Stop_time-start_time)+' times')
Reindeer Moss Eater (2005-08-31 17:45:00) [12]GetTickCount + F1