Главная страница
    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.46 MB
Время: 0.031 c
14-1125491147
MeF Dei Corvi
2005-08-31 16:25
2005.09.25
Ошибки или нет?


6-1117644962
Dok
2005-06-01 20:56
2005.09.25
широковещательный connect


4-1122578548
Galiaf
2005-07-28 23:22
2005.09.25
Простенький файловый менеджер.


14-1125082478
raymond
2005-08-26 22:54
2005.09.25
Прграмма - репозиторий данных


14-1125573455
Ксардас
2005-09-01 15:17
2005.09.25
Мультимедийная клавиатура.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский