Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Zeitzonen auflisten (https://www.delphipraxis.net/54131-zeitzonen-auflisten.html)

Baeuerle 28. Sep 2005 15:01


Zeitzonen auflisten
 
Hi,

kann mir jemand sagen wie ich die unterschiedlichen, verfügbaren Zeitzonen auslesen kann? Mit dem entsprechenden Offset?

Möchte eine ComboBox entwickeln bei der man die Zeitzone auswählen kann.
Ich benötige die genaue Interpretation der einzelnen Registry werte.

Danke im voraus Baeuerle

Ach ja das ganze soll von 95 bis XP laufen !!

Sharky 28. Sep 2005 15:17

Re: Zeitzonen auflisten
 
Zitat:

Zitat von Baeuerle
... verfügbaren Zeitzonen auslesen kann? ...

Hai Bauerle,

was verstehst Du denn unter den "verfügbaren Zeitzonen"?

Baeuerle 28. Sep 2005 15:20

Re: Zeitzonen auflisten
 
Die Zeitzonen die in Windows auswählbar sind.

Union 28. Sep 2005 16:18

Re: Zeitzonen auflisten
 
Zitat:

Zitat von Baeuerle
Hi,

kann mir jemand sagen wie ich die unterschiedlichen, verfügbaren Zeitzonen auslesen kann? Mit dem entsprechenden Offset?

Möchte eine ComboBox entwickeln bei der man die Zeitzone auswählen kann.
Ich benötige die genaue Interpretation der einzelnen Registry werte.

Danke im voraus Baeuerle

Ach ja das ganze soll von 95 bis XP laufen !!

Unter NT, 2000, XP, 2003: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
Unter W9x: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Time Zones

Die Werte sind selbsterklärend, bis auf TZI:

LONG Bias;
LONG StandardBias;
LONG DaylightBias;
SYSTEMTIME StandardDate;
SYSTEMTIME DaylightDate;

Das kannst Du dann in eine TIME_ZONE_INFORMATION schieben.

marabu 28. Sep 2005 16:27

Re: Zeitzonen auflisten
 
Hi,

passenden code gibt es hier: klick. Die Weiche für Windows/WindowsNT muss noch eingebaut werden.

Grüße vom marabu

Union 28. Sep 2005 17:10

Re: Zeitzonen auflisten
 
Zitat:

Zitat von marabu
Hi,

passenden code gibt es hier: klick. Die Weiche für Windows/WindowsNT muss noch eingebaut werden.

Grüße vom marabu

Und hier noch ein Code, der die wirklich wichtigen Dinge (nämlich Bias in Minuten) auflistet:
procedure TForm1.Button1Click(Sender: TObject);
Delphi-Quellcode:
type
   TTZI = record
      Bias : Longint;
      Standardbias : Longint;
      Daylightbias : Longint;
      Standarddate : TSystemTime;
      daylightDate : TSystemTime;
   end;

var
   TZI : TTZI;
   reg : TRegistry;
   Names : TStringList;
   i : integer;
   BaseKey : string;
begin
   Reg := TRegistry.Create(KEY_READ);
   Names := TStringList.Create;
   try
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      BaseKey := 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones';
      Reg.OpenKey(BaseKey, false);
      Reg.GetKeyNames(Names);
      Reg.CloseKey;
      FillMemory(@TZI, sizeof(TZI), 0);
      StringGrid1.RowCount := 2;
      StringGrid1.RowCount := 2;
      StringGrid1.ColCount := 5;
      StringGrid1.FixedRows := 1;

      for i := 0 to Names.Count -1 do
      begin
         Reg.OpenKey(BaseKey+'\'+Names.Strings[i], false);
         Reg.ReadBinaryData('TZI', TZI, sizeof(TZI));
         if i > 0 then
            StringGrid1.Rowcount := StringGrid1.RowCount+1;
         StringGrid1.Cells[0,StringGrid1.RowCount-1] := Names.Strings[i];
         StringGrid1.Cells[1,StringGrid1.RowCount-1] := Reg.ReadString('Display');
         StringGrid1.Cells[2,StringGrid1.RowCount-1] := IntToStr(TZI.Bias);
         StringGrid1.Cells[3,StringGrid1.RowCount-1] := IntToStr(TZI.StandardBias);
         StringGrid1.Cells[4,StringGrid1.RowCount-1] := IntToStr(TZI.DayLightBias);
         Reg.CloseKey;
      end;
      Reg.CloseKey;
   finally
      Names.Free;
      Reg.Free;
   end;

end;

Baeuerle 29. Sep 2005 06:56

Re: Zeitzonen auflisten
 
Herzlichen dank,

das ist genau das was ich gesucht habe!


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz