AGB  ·  Datenschutz  ·  Impressum  







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

Dialog "Zeitzone ändern" nachbauen

Ein Thema von TUX_der_Pinguin · begonnen am 9. Jul 2015 · letzter Beitrag vom 13. Jul 2015
Antwort Antwort
Seite 3 von 3     123
TUX_der_Pinguin

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

AW: Dialog "Zeitzone ändern" nachbauen

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

Willst du den String "(UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien" haben?
Ähm ja, wie soll man den sonst wissen welche Zeitzone aus der Liste aktuell im System eingestellt ist!?
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 13. Jul 2015, 13:50
Ich hatte anhand von StandardName verglichen und war glücklich damit.

Das hatte es nicht mehr in den Upload geschafft.
Delphi-Quellcode:
function TTimeZoneHelper.Equals(Obj: TObject): Boolean;
var
   asTimeZone: TTimeZone;
begin
   if (not (Obj is TTimeZone)) then Exit(False);
   asTimeZone := Obj as TTimeZone;

   Result := ID.Equals(asTimeZone.ID);
end;
  Mit Zitat antworten Zitat
TUX_der_Pinguin

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

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 13. Jul 2015, 14:52
Ich hatte anhand von StandardName verglichen und war glücklich damit.

Das hatte es nicht mehr in den Upload geschafft.
Delphi-Quellcode:
function TTimeZoneHelper.Equals(Obj: TObject): Boolean;
var
   asTimeZone: TTimeZone;
begin
   if (not (Obj is TTimeZone)) then Exit(False);
   asTimeZone := Obj as TTimeZone;

   Result := ID.Equals(asTimeZone.ID);
end;
Ich habe mal versucht die Funktion in die Datei "Helper.System.DateUtils.TimeZone.pas" einzubauen ...
Delphi-Quellcode:
   TTimeZoneHelper = class helper for System.DateUtils.TTimeZone
      protected const
         registryBasePath   = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones';
         expectedResFile      = 'tzres.dll';
      protected
         class function CreateFromRegistry(
            const   registry:   TRegistry;
            const   fetcher:   TResourceStringFetcher;
            const   keyName:   String
         ): TPair<TDynamicTimeZoneInformation, String>;
         /// <summary>
         /// Sortiert absteigend nach UTC-Bias. Von Greenwhich ausgehend
         /// also von West nach Ost.
         /// </summary>
         class procedure MakeSorted(var items: TArray<TTimeZone>);
         class function GetNamedSystemZones(): TDictionary<TDynamicTimeZoneInformation, String>; virtual;
      public
         class function GetZones(): TArray<TTimeZone>;
         class procedure SetLocalTimeZone(const value: TTimeZone); static;
      class function Equals(Obj: TObject): Boolean;
   end;
... der compiler meckert aber das er mit "ID.Equals()" nichts anfangen kann.
Delphi-Quellcode:
class function TTimeZoneHelper.Equals(Obj: TObject): Boolean;
var
   asTimeZone: TTimeZone;
begin
   if (not (Obj is TTimeZone)) then Exit(False);
   asTimeZone := Obj as TTimeZone;

   Result := ID.Equals(asTimeZone.ID);
end;
Aber naja was solls, es scheint ja irgendwie doch nicht so zu funktionieren wie ich mir das gedacht habe. Ich werde das dann wohl auf unbestimmte Zeit verschieben oder gleich ganz lassen.

Vielen vielen dank Günther für deine mühen und deine Geduld
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 13. Jul 2015, 17:25
ID ist ein String. Wenn der kein Equals(..) kennt hast du System.SysUtils nicht in der uses -Liste

Ich muss aber auch sowieso noch eine grafische Oberfläche dazu bauen, habe es damit aber nicht sonderlich eilig. Wenn ich das mal gemacht habe kann ich dir ja auch nochmal Bescheid geben. Denn ich finde, es geht doch an sich alles bestens: Zeitzone feststellen, Zeitzone einstellen. Was vergessen?
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#25

AW: Dialog "Zeitzone ändern" nachbauen

  Alt 13. Jul 2015, 20:33
Was hast du denn sonst erwartet?

Willst du den String "(UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien" haben?
Ähm ja, wie soll man den sonst wissen welche Zeitzone aus der Liste aktuell im System eingestellt ist!?
Es gibt in WINDOWS seit WIN7 ein Tool: TZUTIL.exe

Windows-Zeitzonen-Hilfsprogramm

Syntax:
TZUTIL </? | /g | /s TimeZoneID[_dstoff] | /l>

Parameter:
/? Zeigt Informationen zur Syntax an.
/g Zeigt die aktuelle Zeitzonen-ID an.
/s TimeZoneID[_dstoff]
Legt die aktuelle Zeitzone unter Verwendung der angege-
benen Zeitzonen-ID fest. Mit dem Suffix "_dstoff" werden
Sommerzeitanpassungen fr die Zeitzone deaktiviert
(sofern zutreffend).
/l Führt alle gültigen Zeitzonen-IDs und Anzeigenamen auf.
Ausgabe:
<Anzeigename>
<Zeitzonen-ID>

Beispiele:
TZUTIL /g
TZUTIL /s "Pacific Standard Time"
TZUTIL /s "Pacific Standard Time_dstoff"

Anmerkungen:
Durch den Beendigungscode "0" wird angegeben, dass der
Befehl erfolgreich ausgeführt wurde.

Beispiel:
tzutil /l >F:/timezones.txt
schreibt alle gültigen Zeitzonen-IDs und Anzeigenamen in ein File.

Geändert von hathor (13. Jul 2015 um 20:51 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:25 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