AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Dialog "Zeitzone ändern" nachbauen
Thema durchsuchen
Ansicht
Themen-Optionen

Dialog "Zeitzone ändern" nachbauen

Ein Thema von TUX_der_Pinguin · begonnen am 9. Jul 2015 · letzter Beitrag vom 13. Jul 2015
Antwort Antwort
Seite 2 von 3     12 3      
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 9. Jul 2015, 17:10
Was für ein Zufall, da bin ich momentan auch grade dran: Auf einer Kiosk-Anwendung soll der Inbetriebnehmer jetzt auch die lokale Zeitzone einstellen können.

Die im System vorhandenen Zeitzonen findet man anscheinend wirklich nur, wie schon genannt, in der Registry. Dort musst du den Binarblob auslesen und kannst dir anhand der zwei weiteren Schlüssel dort wieder die Zeitzone zusammenbasteln.

Wenn man auf die .NET-Gegenseite guckt, kann man echt wieder neidisch werden, da ist alles schon fertig. TimeZoneInfo.GetSystemTimeZones() und gut ist (sogar schon sortiert).

Wenn du noch einen Tag wartest, habe ich das fertig. Wenn du nur wissen willst was deine aktuelle Zeitzone ist, das steht auch schon unter System.DateUtils.TTimeZone.Local .

Die lokale Zeitzone zu ändern ist etwas kniffeliger, da musste man, meine ich, noch vorher wieder an diesen komischen Prozess-Privilegien drehen. Bis morgen kann ich das mal alles zusammenstellen.
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#12

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 9. Jul 2015, 17:24
Die lokale Zeitzone zu ändern ist etwas kniffeliger, da musste man, meine ich, noch vorher wieder an diesen komischen Prozess-Privilegien drehen. Bis morgen kann ich das mal alles zusammenstellen.
SetTimeZoneInformation()

Zitat:
Remarks
An application must have the SE_TIME_ZONE_NAME privilege for this function to succeed. This privilege is disabled by default. Use the AdjustTokenPrivileges function to enable the privilege before calling SetTimeZoneInformation, and then to disable the privilege after the SetTimeZoneInformation call. For more information, see Running with Special Privileges.

Windows Server 2003 and Windows XP/2000: The application must have the SE_SYSTEMTIME_NAME privilege.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 9. Jul 2015, 19:46
Für die Inbetriebnahme des Systems, kann man natürlich auch einen extra Benutzer anlegen mit exakt den Rechten, die der benötigt.

Dann kann der in den "normalen" Dialogen herumwurschteln und das System einstellen.

Der Kiosk-Benutzer braucht das nicht zu können.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 10. Jul 2015, 08:24
Wenn du noch einen Tag wartest, habe ich das fertig. Wenn du nur wissen willst was deine aktuelle Zeitzone ist, das steht auch schon unter System.DateUtils.TTimeZone.Local .
Ich nutze noch Delphi 2009 da gibt es TTimeZone leider noch nicht, aber wäre natürlich trotzdem schön zu wissen ob und wie es damit gehen würde. Dann könnte ich die Umsetzung verschieben bis ich eine neuere Delphi Version zur Verfügung habe.


Für die Inbetriebnahme des Systems, kann man natürlich auch einen extra Benutzer anlegen mit exakt den Rechten, die der benötigt.

Dann kann der in den "normalen" Dialogen herumwurschteln und das System einstellen.

Der Kiosk-Benutzer braucht das nicht zu können.
Du hast natürlich vollkommen recht der normale Anwender muss oder sollte das vielleicht auch nicht dürfen. Ich würde die Option vielleicht auch nur in einem Passwortgeschützen Servicebereich anbieten.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 10. Jul 2015, 19:58
Hallo-

Es war insgesamt doch mehr Aufwand als ich gedacht hätte.
Anbei ein kleines Konsolenprogramm was dir alle Zeitzonen im System auflistet (formatiert und lokalisiert) und deine lokale Zone ändern kann.

Delphi 2009 war vor meiner Zeit, keine Ahnung wie viel von dem Code man da übernehmen kann.
Angehängte Dateien
Dateityp: zip TimeZoneAdjustments.zip (12,8 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 11. Jul 2015, 03:17
Ich gucke es mir Montag auf der Arbeit an. Vielen Dank schon mal das du hier deine Arbeit teilst
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 13. Jul 2015, 09:56
So es ist Montag und ich habe mir deinen Code angesehen, soweit sehr gut nur fehlt mir da immer noch die Möglichkeit zu sehen welche Zeitzone zur Zeit im System eingestellt ist. Oder bin ich so blind das ich diese Funktion nicht erkenne !?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#18

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 13. Jul 2015, 10:08
Ich habe das nicht neu gebaut, sondern würde TTimeZone.Local aus System.DateUtils verwenden. Wenn es das bei dir noch nicht gibt, kannst du WinApi.Windows.GetDynamicTimeZoneInformation(..) verwenden.

Bei der Gelegenheit- Der TTimeZoneHelper könnte vielleicht noch Equals(..) überschreiben um zu prüfen ob zwei Zeitzonen gleich sind.
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 13. Jul 2015, 11:33
Ich habe das nicht neu gebaut, sondern würde TTimeZone.Local aus System.DateUtils verwenden. Wenn es das bei dir noch nicht gibt, kannst du WinApi.Windows.GetDynamicTimeZoneInformation(..) verwenden.

Bei der Gelegenheit- Der TTimeZoneHelper könnte vielleicht noch Equals(..) überschreiben um zu prüfen ob zwei Zeitzonen gleich sind.
Ich habe mir mal die Testversion von Delphi XE8 heruntergeladen, jedoch ob ich das neue TTimeZone.Local.DisplayName das "ältere" GetTimeZoneInformation oder GetDynamicTimeZoneInformation verwende erhalte ich nur "Mitteleuropäische Zeit" und damit kann ich leider nichts anfangen.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#20

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 13. Jul 2015, 12:44
Was hast du denn sonst erwartet?

Willst du den String "(UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien" haben?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 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