AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi ShortDateFormat nach Windows-Sperrung/Entsperrung geändert
Thema durchsuchen
Ansicht
Themen-Optionen

ShortDateFormat nach Windows-Sperrung/Entsperrung geändert

Ein Thema von anse · begonnen am 10. Aug 2009 · letzter Beitrag vom 11. Aug 2009
Antwort Antwort
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
194 Beiträge
 
Delphi 11 Alexandria
 
#1

ShortDateFormat nach Windows-Sperrung/Entsperrung geändert

  Alt 10. Aug 2009, 19:21
Bin gerade auf einen merkwürdiges Phänomen gestoßen, daß bei mir diverse EConvertError Exceptions bei StrToDateTime() verursacht. Ich setze bei Programmstart die regionalen Datums-Einstellungen folgendermaßen:
Delphi-Quellcode:
DateSeparator := '-';
TimeSeparator := ':';
ShortDateFormat := 'yyyy/mm/dd';
LongTimeFormat := 'hh:nn:ss';
Später mache ich sowas (stark vereinfacht):
bla := StrToDateTime('2000-01-01 01:00:00') was auch eigentlich niemals eine Exception wirft, weil ich ja das ShortDateFormat oben passend gesetzt habe.

Nun habe ich durch Zufall einmal
1. Programm gestartet
2. mein Vista gesperrt ...
3. ... und wieder entsperrt
4. tataa - EConvertErrors in StrToDateTime(), weil ShortDateFormat zurückgesetzt wurde auf meine deutschen Originaleinstellungen ('dd.MM.yyyy')

Woher kommt dieses eigenmächtige Verhalten und wie kann ich das verhindern?
Ansgar Becker
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

Re: ShortDateFormat nach Windows-Sperrung/Entsperrung geände

  Alt 10. Aug 2009, 19:39
Wenn ich das aus der Delphi Hilfe richtig interpretiere:

Nach sperren/entsperren von Windows bekommt Deine Anwendung von Windows wohl eine WM_WININICHANGE-Botschaft. Diese sorgt dafür, das solche Variablen mit GetLocalInfo neu eingelesen werden.

Das kann man verhindern mit
Application.UpdateFormatSettings := False
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: ShortDateFormat nach Windows-Sperrung/Entsperrung geände

  Alt 10. Aug 2009, 19:44
Bei neueren Delphiversionen könnte man auch die überladenen Versionen mit dem Foramt als Parameter wählen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
194 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: ShortDateFormat nach Windows-Sperrung/Entsperrung geände

  Alt 10. Aug 2009, 21:41
Vielen Dank! Application.UpdateFormatSettings ist genau dafür gedacht.

Merkwürdig dennoch, dass dass Windows-Entsperren einer "System-Änderung" gleichgesetzt wird (mit der Folge WM_WININICHANGE).

Aus der Hilfe:
Zitat von Delphi Help:
Specifies whether format settings are updated automatically when the user alters the system configuration.

Use UpdateFormatSettings to control automatic updating of format settings. The default of true is set in the constructor. UpdateFormatSettings is checked when the application receives a WM_WININICHANGE message.

Using the default format settings is recommended. These settings are initialized to the Windows local settings.
Die überladenen Versionen mit Format-Parameter verwenden eine lokale Kopie der Settings und sind damit thread-safe. Das ginge natürlich auch, ist aber in diesem Fall nicht angebracht.
Ansgar Becker
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: ShortDateFormat nach Windows-Sperrung/Entsperrung geände

  Alt 11. Aug 2009, 06:16
Kenn mich mit Vista nicht viel aus, weil ich es meide wie die Pest, aber kann es sein, dass du nicht nur gesperrt sondern dich abgemeldet und wieder angemeldet hast? (bei XP gibts dieses schnelle Benutzerwechseln, ka, wie es bei Vista ist) Dann wäre verständlich, dass diese Window Message geschickt wird.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
194 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: ShortDateFormat nach Windows-Sperrung/Entsperrung geände

  Alt 11. Aug 2009, 06:20
Das war nur eine Sperrung, also genau wie bei XP, keine Abmeldung. Habe allerdings das gleiche Phänomen unter XP gesehen.
Ansgar Becker
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

Re: ShortDateFormat nach Windows-Sperrung/Entsperrung geände

  Alt 11. Aug 2009, 06:41
Spracheinstellungen sind ja u.U. Benutzer abhängig. Die ändern sich zwar theoretisch nicht, wenn der gleiche Benutzer den Desktop entsperrt, aber das muss ja nicht der gleiche Benutzer sein. Ein Administrator kann auch entsperren... da wird wohl einfach immer vorsorglich entsprechende Botschaft an die Anwendungen versendet.

Ist ja auch besser, dass im Programm zu berücksichtigen. Gibt ja viele Einstellungs-Änderungen, die WM_WININICHANGE (WM_SETTINGCHANGE) auslösen. Sogar die Möglichkeit, dass der Benutzer tatsächlich selber ein entsprechendes Zeit-Format ändert, während das Programm läuft.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

Re: ShortDateFormat nach Windows-Sperrung/Entsperrung geände

  Alt 11. Aug 2009, 06:46
Richtig, deshalb vermeide ich es persönlich sowieso, die Formateinstellungen in meinem Programm abweichend von denen in Windows eingestellten zu haben. Wie bereits erwähnt gibt es dazu Konvertierungsfunktionen, denen man den Formatstring mitgeben kann, sollte man diese benötigen, weil man z.B. ein bestimmtes Datum/Urzeit vorbelegen möchte o.Ä.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
194 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: ShortDateFormat nach Windows-Sperrung/Entsperrung geände

  Alt 11. Aug 2009, 10:28
Ja, vermeiden sollte man das immer tunlichst - das ist nur in speziellen Situationen sinnvoll - wie z.B. in meinem Programm
Ansgar Becker
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:31 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