Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > В чем моя ошибка?


Автор: Gnusss 1.5.2006, 17:58
Привет всем!

Сделал себе функцию, которая показывала бы мне время, прошедшее со старта чего-либо.
По идеи функция должна показывать Минуты, Секунды, Миллисекунды, но почему-то работает она не правильно вот код:
Код

function GetRunTime: String;
var
 Minutes,
 Seconds,
 Seconds1,
 Milliseconds: Word;
 Temp: Cardinal;
begin
 Temp:= GetTickCount-StartTime;
 DivMod(Temp,100,Seconds,Milliseconds);
 DivMod(Seconds,60,Minutes,Seconds1);
 Result:= Format('%D:%D:%D',[Minutes,Seconds1,Milliseconds]);
end;

В чем моя ошибка? 

Автор: volvo877 1.5.2006, 18:09
Gnusss, погоди, а разве в секунде 100 миллисекунд, а не 1000? 

Автор: Nickel 1.5.2006, 18:19
Чё-то мне не нравится этот DivMod. Он расчитан на работу с integer, а в твоём случае нам может понадобиться более крупный диапазон. 

Автор: Gnusss 1.5.2006, 18:35
volvo877, а я точно и не знаю...  smile  надо посмотреть...
Nickel, а, по-моему, и DivMod сойдет, или у тебя есть альтернатива?


Действительно в секунде 1000 миллисекунд.
Все вопрос решен. 

Автор: Nickel 1.5.2006, 19:10
По-моему так надёжнее:
Код

function GetRunTime: String;
var
 Minutes,
 Seconds,
 Seconds1,
 Milliseconds,
 Temp: int64;
begin
 Temp:= GetTickCount-StartTime;
 Milliseconds:=Temp mod 1000;
 Seconds:=Temp div 1000;
 Seconds1:=Seconds mod 60;
 Minutes:=Seconds div 60;
 Result:= Format('%D:%D:%D',[Minutes,Seconds1,Milliseconds]);
end;
  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)