Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.25;
Скачать: CL | DM;

Вниз

Вычислить разницу во времени   Найти похожие ветки 

 
Draught   (2005-08-31 17:44) [0]

Всем доброго времени суток...
Вроде задача простая - перед выполнением процедуры запомнить время, после выполнения запомнить, затем подсчитать разницу и показать результат, одно НО, хотелось бы точность не до секунды получить, а еще 3 знака после секунды.
Пробовал покрутить с двумя переменными

var start_time,stop_time:int64
...
begin
...
start_time:=GetCurrentTime;
while ...;
stop_time:=GetCurrentTime;
...
Showmessage(IntToStr(Start_time-stop_time)+" times");
...
end;


в итоге получаю просто число "1547" - его можно каким-нибудь образом представить в виде часов, минут, секунд и миллисекунд?


 
Reindeer Moss Eater ©   (2005-08-31 17:45) [1]

GetTickCount + F1


 
Draught   (2005-08-31 17:46) [2]

ошибся немного...

showmessage(IntToStr(Stop_time-start_time)+" times")


 
Draught   (2005-08-31 17:59) [3]

Хорошо, как вычислять милисекунды я понял, GetCurrentTime тоже неплохо справлялся с этим :)

Как теперь перевести число в часы, минуты, секунды и милисекунды??? Есть такая функция в делфи??? Или ее нужно самому создавать???


 
Reindeer Moss Eater ©   (2005-08-31 18:01) [4]

миллилитр = одна тысясная литра.
миллисекунда - одна тысячная секунды.


 
Antonn ©   (2005-08-31 18:14) [5]

formatdatetime("hh:nn:ss:zzzz", now)


 
Fay ©   (2005-08-31 18:47) [6]

Antonn ©   (31.08.05 18:14) [5]
zzz


 
Jeer ©   (2005-08-31 18:58) [7]

Reindeer Moss Eater ©   (31.08.05 17:45) [1]

Квант - 10-20 ms
Человек хочет три знака после секунды, т.е. 1 ms.

QueryPerformanceCounter
RDTSC


 
WST   (2005-08-31 19:18) [8]

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!


 
Draught   (2005-08-31 19:29) [9]

всем спасибо...
в итоге все-таки пришлось делать так:


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;


 
menart ©   (2005-08-31 19:41) [10]

var
 d:TDateTime;
begin
d:=now;

...

showmessage(formatDateTime("hh:mm:ss:ms",(now-d)));


 
menart ©   (2005-08-31 19:41) [11]

var
 d:TDateTime;
begin
d:=now;

...

showmessage(formatDateTime("hh:mm:ss:ms",(now-d)));


 
menart ©   (2005-08-31 19:56) [12]

Извеняюсь

var
d:TDateTime;
begin
d:=now;

...

showmessage(formatDateTime("hh:mm:ss:zzz",(now-d)));



Страницы: 1 вся ветка

Текущий архив: 2005.09.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
3-1123763303
Alex_
2005-08-11 16:28
2005.09.25
Проблема с кодировкой


14-1125654972
Jeer
2005-09-02 13:56
2005.09.25
GPS в России: восстание министров


3-1123475272
АлеКо
2005-08-08 08:27
2005.09.25
поведение ADODataSet в Master-Detal


8-1115491218
VasRog
2005-05-07 22:40
2005.09.25
GraphicEx + формат файла


3-1123592233
Shopot
2005-08-09 16:57
2005.09.25
ADO и база данных Access.