- Э, простите, а сколько занимает виндовс?
- Сколько находит - столько и занимает...
procedure TForm1.Button1Click(Sender: TObject);
var
ndays: double;
ticks: LongInt;
btime: TDateTime;
begin{Функция GetTickCount получает количество миллисекунд,
прошедших с момента старта Windows}
ticks := GetTickCount;
{Чтобы получить дни, необходимо разделить на количество
миллисекунд в дне, 24*60*60*1000=86400000}
ndays := ticks/86400000;
{теперь вычитаем из текущей даты полученное количество
дней работы Windows}
bTime := now-ndays;
{показываем диалоговое окошко с сообщением}
ShowMessage(
FormatDateTime('"Windows started on" dddd, mmmm d, yyyy, ' +
'"at" hh:nn:ss AM/PM', bTime) + #10#13 +
'Its been up for ' + IntToStr(Trunc(nDays)) + ' days,' +
FormatDateTime(' h "hours," n "minutes," s "seconds"',ndays));
end;
Программа на Delphi, которая рассчитывает, сколько времени прошло с момента запуска Windows.
Обзор кода:
Функция GetTickCount вызывается для получения количества миллисекунд, прошедших с момента запуска Windows.
Количество дней вычисляется путем деления количества миллисекунд на 86400000, что равно количеству миллисекунд в дне (24 часа * 60 минут * 60 секунд * 1000 миллисекунд).
Текущая дата и время вычитываются из результата для получения даты и времени, когда Windows запустился.
Диалоговое сообщение отображается с результатом, форматированным как строка с помощью FormatDateTime. Сообщение включает в себя дату и время, когда Windows запустился, а также количество дней, прошедших с момента запуска.
Вывод будет выглядеть примерно так:
"Windows started on Friday, January 1, 2022, at 12:00:00 AM"
"It's been up for 365 days, 23 hours, 45 minutes"
Обратите внимание, что функция GetTickCount возвращает количество миллисекунд с момента запуска Windows, поэтому результат будет приблизительным. В действительности время может прошло быстрее или медленнее из-за различных факторов, таких как загрузка системы и дрейф часов.
Альтернативным решением является использование функции GetSystemTimeAdjustment для получения более точного оценки времени работы. Функция возвращает количество миллисекунд, на которое система часы были корректированы с момента последней перезагрузки.
Пример кода:
usesWinAPI;procedureTForm1.Button1Click(Sender:TObject);varticks:LongInt;btime:TDateTime;beginticks:=GetTickCount;bTime:=now-(ticks/1000);// Convert milliseconds to secondsShowMessage(FormatDateTime('"Windows started on" dddd, mmmm d, yyyy, '+'"at" hh:nn:ss AM/PM',bTime)+#10#13+'It''s been up for '+IntToStr(Trunc((now-bTime).TotalDays))+' days');end;
Код использует функцию GetTickCount для получения количества миллисекунд с момента запуска Windows, а затем конвертирует его в секунды. Затем вычисляется время, когда Windows запустился, путем вычитания результата из текущей даты и времени. Остальная часть кода остается прежней.
В статье описывается программный код на языке Delphi, который позволяет рассчитать время работы Windows с момента его запуска и отобразить это время в диалоговом окне.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.