Текущий архив: 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.46 MB
Время: 0.031 c