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

Как получить список часовых поясов

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

Как получить список часовых поясов


- А какое сегодня число? - спросил уставший программист.
Второй не задумываюсь отвечает:
- Целое, положительное!


uses
  Registry;

...

var
  reg : TRegistry;
  ts : TStrings;
  i : integer;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones', false);
  if reg.HasSubKeys then
  begin
    ts := TStringList.Create;
    reg.GetKeyNames(ts);
    reg.CloseKey;
    for i := 0 to ts.Count -1 do
    begin
      reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones\' + ts.Strings[i], false);
      Memo1.Lines.Add(ts.Strings[i]);
      Memo1.Lines.Add(reg.ReadString('Display'));
      Memo1.Lines.Add(reg.ReadString('Std'));
      Memo1.Lines.Add(reg.ReadString('Dlt'));
      Memo1.Lines.Add('----------------------');
      reg.CloseKey;
    end;
    ts.Free;
  end
  else
    reg.CloseKey;
  reg.free;
end;

Программный код на Delphi, который извлекает список часовых зон из реестра Windows и отображает их в контроле Memo1. Вот шаг за шагом, что код делает:

  1. Создается объект TRegistry, используемый для взаимодействия с реестром Windows.
  2. Код открывает ключ "SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones" под корневым ключом HKEY_LOCAL_MACHINE.
  3. Если ключ имеет подключи (то есть часовые зоны), создается объект TStringList и извлекает список имен часовых зон с помощью метода GetKeyNames.
  4. Затем код проходит по каждому имени часовой зоны, открывая соответствующий подключ и чтение трех строковых значений: "Display", "Std" и "Dlt".
  5. Для каждого часового пояса добавляет имя в строки контрола Memo1, за которым следуют прочитанные строки.
  6. Наконец, код закрывает реестровый ключ и освобождает объект TRegistry.

Чтобы получить список часовых зон программно, вы можете использовать этот код как есть. Однако, если вы хотите извлечь список без отображения в контроле Memo1, вы можете изменить код для хранения имен часовых зон в массиве или коллекции вместо добавления их в строки контрола Memo1.

Вот альтернативное решение, которое извлекает список часовых зон и хранит его в объекте TStringList:

var
  ts: TStringList;
begin
  ts := TStringList.Create;
  try
    reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones', false);
    if reg.HasSubKeys then
      for i := 0 to reg.SubKeyCount - 1 do
        ts.Add(reg.EnumKey(i));
  finally
    reg.CloseKey;
    ts.Free;
  end;
end;

В этом коде используется метод EnumKey для извлечения списка имен часовых зон и хранения их в строковом списке ts. Вы можете использовать этот список, как вам нужно в вашем программе.

Статья описывает способ получения списка часовых поясов на компьютере с помощью программирования в Delphi, используя библиотеку Registry и строковый список.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 14:22:08/0.0048160552978516/1