Задать вопрос
@Yam0lod5y

Счётчик успешных операций в минуту на Delphi?

Пытаюсь сделать счётчик операций в минуту, уже подустал, нашёл данный код на c++, как его можно перенести в delphi?

var temp = 0;
for (int i = FailedList.Count() - 1; i >= 0; i--) { if ((DateTime.Now - FailedList[i].Time).TotalSeconds > 60) break; temp++; }
cpm = temp;


вот пример моего кода где считаю, но не хватает мозгов додумать, был вариант, но ругается на 0, хотя в другой среде всё работает, тут проблема с остатком, почему то при деление только 0 выдаёт, без сотых и т.д. и есть совсем не приятный момент, что тут показывает результат только спустя минуту
CPM := CHECKEDCount div ((DATENOWunix - STARTTIMEunix) div 60000);
  • Вопрос задан
  • 123 просмотра
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
HemulGM
@HemulGM Куратор тега Delphi
Delphi Developer, сис. админ
Используй тики. GetTickCount это счетчик ОС.
var Save := GetTickCount;
<do something>
var Delta := GetTickCount - Save; <- Тут кол-во миллисекунд, потраченное на действие выше
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
OCTAGRAM
@OCTAGRAM
Обычно календарь юникса измеряется в секундах, и только в JS исключение с миллисекундами. Если там правда миллисекунды, может, тогда заменить целочисленное деление div на операцию с плавающей точкой /

Также хорошей практикой будет использовать по возможности не гражданский календарь, а монотонное время. В языке Ada это приложение к стандарту D.8 Monotonic Time, описывающее пакет Ada.Real_Time. В Delphi тот же функционал спрятан в модуль с не очевидным названием System.Diagnostics. Это если программа не перезапускается в течение всего интересующего интервала.
Ответ написан
Комментировать
@acwartz
Тут должна быть ваша реклама.
Ну и зачем вам юникстайм для этого?
Есть же функция ОС GetTickCount , а если работать с датами то в DateUtils есть MillisecondsBetween который вернет ровно тот же результат что и GetTickCount. Дальше хоть в секунды хоть в часы...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы