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

Сохранить значение TDateTime в реестре

Delphi , ОС и Железо , Реестр

Сохранить значение TDateTime в реестре

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   Registry;

 // Write TDateTime to Registry 
procedure Reg_WriteDateTime(dwRootKey: DWord; const sKey: string; const sField: string; aDate: TDateTime);
 begin
   with TRegistry.Create do
   try
     RootKey := dwRootKey;
     if OpenKey(sKey, True) then
     begin
       try
         WriteBinaryData(sField, aDate, SizeOf(aDate));
       finally
         CloseKey;
       end;
     end;
   finally
     Free;
   end;
 end;

 // Read TDateTime from Registry 
function Reg_ReadDateTime(dwRootKey: DWord; const sKey: string; const sField: string) : TDateTime;
 begin
   Result := 0; // default Return value 
  with TRegistry.Create do
   begin
     RootKey := dwRootKey;
     if OpenKey(sKey, False) then
     begin
       try
         ReadBinaryData(sField, Result, SizeOf(Result));
       finally
         CloseKey;
       end;
     end;
     Free;
   end;
 end;

 // Example: 

// Write DateTimePicker1's DateTime to Registry 
procedure TForm1.Button1Click(Sender: TObject);
 begin
    Reg_WriteDateTime(HKEY_CURRENT_USER, 'Software\TestXYZ\','DateTime',DateTimePicker1.DateTime);
 end;

 // Set DateTimePicker1's DateTime from Registry 
procedure TForm1.Button2Click(Sender: TObject);
 var
  ATime: TDateTime;
 begin
   ATime := Reg_ReadDateTime(HKEY_CURRENT_USER, 'Software\TestXYZ\','DateTime');
   if ATime <> 0 then
     DateTimePicker1.DateTime := TDateTime(ATime);
 end;

Привет! Я переведу текст на русский язык:

Пример кода Delphi демонстрирует, как записать и считать значение типа TDateTime в реестре Windows с помощью компонента Registry.

Описание кода:

Код состоит из двух процедур - Reg_WriteDateTime и Reg_ReadDateTime, которые используются для записи и чтения значений типа TDateTime из реестра, соответственно. Эти процедуры используют класс TRegistry для взаимодействия с реестром.

  1. Reg_WriteDateTime: Эта процедура принимает четыре параметра:
    • dwRootKey: Корневой ключ реестра, в котором будет записано значение.
    • sKey: Имя ключа реестра, в котором будет храниться значение.
    • sField: Имя поля в ключе, где будет храниться значение.
    • aDate: Значение типа TDateTime, которое будет записано в реестр. Процедура создает новый экземпляр класса TRegistry, устанавливает корневой ключ и открывает указанный ключ для записи. Затем она записывает значение типа TDateTime в реестр с помощью метода WriteBinaryData. Наконец, она закрывает ключ и освобождает объект TRegistry.
  2. Reg_ReadDateTime: Функция принимает три параметра:
    • dwRootKey: Корневой ключ реестра, из которого будет считано значение.
    • sKey: Имя ключа реестра, в котором хранится значение.
    • sField: Имя поля в ключе, где хранится значение.

Функция создает новый экземпляр класса TRegistry, устанавливает корневой ключ и открывает указанный ключ для чтения. Затем она считывает бинарные данные из реестра с помощью метода ReadBinaryData и присваивает их переменной Result (которая инициализируется значением 0). Наконец, она закрывает ключ и освобождает объект TRegistry.

Пример использования:

Пример кода демонстрирует использование этих процедур в Delphi-форме. Метод Button1Click записывает текущую дату и время из контрола DateTimePicker в реестр с помощью Reg_WriteDateTime. Метод Button2Click считывает хранящееся значение из реестра с помощью Reg_ReadDateTime и устанавливает его как значение контрола DateTimePicker.

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

Если вам нужно более компактное решение, вы можете использовать встроенное поддержку чтения и записи бинарных данных классом TRegistry. Например:

procedure Reg_WriteDateTime(dwRootKey: DWord; const sKey: string; const sField: string; aDate: TDateTime);
begin
  with TRegistry.Create do
  try
    RootKey := dwRootKey;
    OpenKey(sKey, True);
    WriteBinaryData(sField, aDate, SizeOf(aDate));
  finally
    CloseKey;
    Free;
  end;
end;

function Reg_ReadDateTime(dwRootKey: DWord; const sKey: string; const sField: string): TDateTime;
begin
  Result := 0;
  with TRegistry.Create do
  try
    RootKey := dwRootKey;
    OpenKey(sKey, False);
    ReadBinaryData(sField, Result, SizeOf(Result));
  finally
    CloseKey;
    Free;
  end;
end;

Это решение более компактно и eliminiates need for explicit try-finally blocks. Однако, оно достигает того же результата, что и оригинальный код.

Рассмотрены примеры кода на Delphi для записи и чтения значения типа TDateTime в реестре Windows с помощью компонента Registry.


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

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




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


:: Главная :: Реестр ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 06:39:54/0.0034661293029785/0