Главная страница
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.047 c
2-1124164683
КотаПёс
2005-08-16 07:58
2005.09.25
Запись текста в файл


14-1124950374
dr Tr0jan
2005-08-25 10:12
2005.09.25
Форум по FreeBSD


3-1123674956
Xmen
2005-08-10 15:55
2005.09.25
MSSQL 2000 (sp2) c Full - Text Search


1-1125922679
rel_
2005-09-05 16:17
2005.09.25
Проблема с шрифтами


6-1117731476
Scorp123
2005-06-02 20:57
2005.09.25
Помогите разобратся с кодом