Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Изменение системного времени из Delphi2

Delphi , Синтаксис , Дата и Время

Изменение системного времени из Delphi2

Программист:
- Сегодня у сына день рождения.
- И сколько ему исполняется?
- 1024 дня.

Можно. Попробуйте следующий код:


Procedure settime(hour, min, sec, hundreths : byte); assembler;
asm
  mov  ch, hour
  mov  cl, min
  mov  dh, sec
  mov  dl, hundreths
  mov  ah, $2d
  int  $21
end;

Procedure setdate(Year : word; Month, Day : byte); assembler;
asm
  mov  cx, year
  mov  dh, month
  mov  dl, day
  mov  ah, $2b
  int  $21
end;

Here is the translation of the content into Russian:

**Взрыв из прошлого! Delphi 2, язык ассемблера и день рождения для празднования!

Код, предоставленный ниже, является попыткой изменить системное время с помощью языка ассемблера в Delphi 2. Давайте разобьем его:

процедура settime

  • Она принимает четыре параметра: hour, min, sec и hundreths типа byte.
  • Язык ассемблера использует следующие регистры:
    • ch: хранит значение часа
    • cl: хранит значение минуты
    • dh: хранит значение секунды
    • dl: хранит значение сотых секунд (миллисекунд)
  • Она настраивает значения в регистрах и затем выполняет прерывание с AH = $2D, которое является функцией BIOS для установки системного времени.
  • Инструкция int $21 триггерирует эту функцию BIOS.

процедура setdate

  • Она принимает три параметра: Year, Month и Day типа word и byte, соответственно.
  • Язык ассемблера использует следующие регистры:
    • cx: хранит значение года
    • dh: хранит значение месяца (начиная с 1, поэтому январь - 1, февраль - 2 и т.д.)
    • dl: хранит значение дня
  • Она настраивает значения в регистрах и затем выполняет прерывание с AH = $2B, которое является функцией BIOS для установки системной даты.
  • Инструкция int $21 триггерирует эту функцию BIOS.

Замечания

  1. Эти процедуры используют ключевое слово asm для указания языка ассемблера.
  2. Значения $2D и $2B в инструкциях прерывания являются кодами функций BIOS для установки времени и даты, соответственно.
  3. Инструкция int $21 триггерирует эти функции BIOS.
  4. Для использования этих процедур вам нужно вызвать их с желаемыми значениями времени и даты.

Альтернативное решение

В современных версиях Delphi (начиная с Delphi XE2), вы можете использовать функции System.SysUtils.SetTime и System.SysUtils.SetDate для установки системного времени и даты. Эти функции являются частью VCL (Visual Component Library) и более удобны в использовании, чем код на языке ассемблера.

Пример:

uses System.SysUtils;

procedure SetTime(Hour, Min, Sec, Hundredths: Word);
begin
  SetTime(Hour, Min, Sec, Hundredths);
end;

procedure SetDate(Year, Month, Day: Integer);
begin
  SetDate(Year, Month, Day);
end;

Эти процедуры более читаемы и поддерживаемы, чем код на языке ассемблера, предоставленный ниже.

В статье описывается изменение системного времени из Delphi2 с помощью процедур settime и setdate, написанных на ассемблере.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Дата и Время ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:03:30/0.005357027053833/1