AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DateTimeToStr Konvertierungsproblem

Ein Thema von JonnyGuitar · begonnen am 6. Aug 2007 · letzter Beitrag vom 10. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#1

DateTimeToStr Konvertierungsproblem

  Alt 6. Aug 2007, 09:06
moin zusammen,

ich habe beim konvertieren eines strings nach datetime folgendes problem, und zwar bekomme ich aus der registry einen string folgenden musters: '12.11.2007'. dieser lässt sich auf meinem rechner problemlos konvertieren. stelle ich aber nun in der systemsteuerung/regions- und sprachoptionen die regionalen einstellungen auf z.b. englisch, die ja bekannterweise ein anderes datumsformat haben, kommt es natürlich zu einem konvertierungsfehler: '12.11.2007' ist keine gültige Datums- und Uhrzeitangabe.

meine frage ist jetzt ob einer die idee hat wie ich erkennen kann welches datumsformat vom system gewünscht wird und ich den string ggfs. so umbauen kann, dass eine konvertierung klappt.


mfg Jonny
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
DelphiKlaus

Registriert seit: 18. Okt 2006
100 Beiträge
 
Delphi 6 Professional
 
#2

Re: DateTimeToStr Konvertierungsproblem

  Alt 6. Aug 2007, 09:16
Moin alleine,

es gibt in Delphi globale Variablen, die Du setzen musst. Ich glaube, sie heissen ShortDateFormat und LongDateFormat. Damit bist Du unabhängig von den Einstellungen in der Systemsteuerung.

Klaus
  Mit Zitat antworten Zitat
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#3

Re: DateTimeToStr Konvertierungsproblem

  Alt 6. Aug 2007, 10:20
danke klaus, hat wunderbar funktioniert
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
Benutzerbild von PinKing2
PinKing2

Registriert seit: 9. Aug 2007
29 Beiträge
 
#4

Re: DateTimeToStr Konvertierungsproblem

  Alt 9. Aug 2007, 11:44
Moin, moin,

ich hab da grad ein Problem mit dem ShortDateFormat,
deshalb häng ich hier mal mit dran.

Ich benutze in einem Programm auch das ShortDateFormat
um unabhängig von den Einstellungen der Datumseinstellung
des PCs zu sein. Wenn mein Programm gestartet wird stelle
ich in FormActivate yyyy-dd-mm ein. Alles funktioniert auch,
aber wenn ich meinen Computer sperre (Strg+Alt+Entf z.B.)
und mich anschliessend wieder anmelde schmiert mein Programm
anschliessend gnadenlos ab, weil jetzt das ShortDateFormat
wieder so ist, wie am PC eingestellt (dd.mm.yyyy).

Ich denke XP liesst die Registry neu ein, aber wie bringe ich
das jetzt meinem Programm bei?

Hab schon mit den Form-Ereignissen experimentiert, aber irgendwie wird keins
in dem Moment aufgerufen, wenn man den PC entsperrt.

Hat jemand einen Tipp für mich?

Lieben Gruß,

Andreas.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: DateTimeToStr Konvertierungsproblem

  Alt 9. Aug 2007, 12:31
Verwende am Bestn die überladene Version der Konvertierungsfunktionen mit dem Format als Parameter.
Markus Kinzler
  Mit Zitat antworten Zitat
DelphiKlaus

Registriert seit: 18. Okt 2006
100 Beiträge
 
Delphi 6 Professional
 
#6

Re: DateTimeToStr Konvertierungsproblem

  Alt 9. Aug 2007, 13:32
Wenn Du Deinen Rechner sperrst, läuft Dein Programm ganz normal weiter. Ich vermute daher, dass irgendeine Komponente das ShortDateFormat zurückstellt. Ich hab mir angewöhnt, es immer direkt vor den Stellen zu setzen, wo ich auch die Konvertierung mache. Dann wird die Zuweisung zwar häufiger gemacht als nötig, aber es handelt sich um eine einfache Stringzuweisung an eine globale Variable.

Klaus
  Mit Zitat antworten Zitat
Benutzerbild von PinKing2
PinKing2

Registriert seit: 9. Aug 2007
29 Beiträge
 
#7

Re: DateTimeToStr Konvertierungsproblem

  Alt 9. Aug 2007, 13:46
Hallo Klaus, hallo mkinzler,

vielen Dank für die Antworten.

Ich werde mein Programm wohl so umschreiben, dass ich unabhängig vom
Datumsformat vom PC bin.

Den Hinweis mit der Komponente verstehe ich nicht? Welche Komponente
soll das Datumsformat umschreiben? In meinem Programm wird es nirgends
zurückgestellt, es kann nur von Windows zurückgestellt werden.

Gruß, Andreas.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: DateTimeToStr Konvertierungsproblem

  Alt 9. Aug 2007, 13:59
Diese Variablen zu setzen halte ich für einen Fehler. Ein Nutzer will ein Datum in der Art und Weise angezeigt bekommen wie es im System eingestellt ist. Wenn jetzt irgend eine Komponente ein spezielles Format erwartet und es umstellst stimmt von einer anderen Komponente plötzlich die visuelle Ausgabe nicht mehr mit dem überein was der Nutzer erwartet. Daher sollte man wie bereits erwähnt die überladenen Methoden verwenden wo man angeben kann welches format bei der Konvertierung genutzt werden soll.

Und das unschöne Effekte passieren wenn man sich auf die werte der globalen Variablen verlässt wurde ja schon festgestellt
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
DelphiKlaus

Registriert seit: 18. Okt 2006
100 Beiträge
 
Delphi 6 Professional
 
#9

Re: DateTimeToStr Konvertierungsproblem

  Alt 9. Aug 2007, 14:00
Hallo Andreas,

wenn Du Deinen Rechner sperrst, wird doch nur die Bedienung des Rechners verhindert, bis Du Dich wieder anmeldest. Warum sollte Windows dann ein Neueinlesen der Registry durchführen und überhaupt, wohin einlesen. In Delphi sind eine globale Variable ShortDateFormat und einige weitere für ähnlich Aufgaben implementiert. Ein Delphi-Programm liest beim Start einmal den zugehörigen Wert aus der Registry und danach kann der Wert vom Programm verändert werden. Windows weiß aber überhaupt nichts davon, dass ein Delphi-Programm so vorgeht, kann also an der Stelle auch nicht von sich aus den Wert wieder zuurücksetzen. Meine Erfahrung ist, dass bei Einsatz von (Fremd-)Komponenten häufig solche Einstellungen wieder zurückgesetzt werden, weil diese Komponenten die Einstellungen eben für ihre eigenen Zwecke zurechtbiegen und den vorherigen Zustand nicht wieder herstellen.

Klaus
  Mit Zitat antworten Zitat
Benutzerbild von PinKing2
PinKing2

Registriert seit: 9. Aug 2007
29 Beiträge
 
#10

Re: DateTimeToStr Konvertierungsproblem

  Alt 9. Aug 2007, 15:14
Hallo Klaus,

tja es ist aber so, dass Windows das Datumsformat nach der Neuanmeldung
umstellt.

Ich habe ein Testprojekt gemacht mit einem Memofeld und einem Button.
Der Quelltext sieht so aus:
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
begin
 ShortDateFormat:='YYYY-DD-MM';
 DateSeparator:='-';
                       
 Memo1.Lines.Add('');
 Memo1.Lines.Add(ShortDateFormat);
 Memo1.Lines.Add(DateSeparator);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Add('');
  Memo1.Lines.Add(ShortDateFormat);
  Memo1.Lines.Add(DateSeparator);
end;
Beim Start ist das Datumsformat so wie an ShortDateFormat übergeben, aber wenn man Windows
einmal sperrt und sich wieder anmeldet, und dann den Button drückt, ist das Datumsformat
anders (wie in der Systemsteuereung von Windows festgelegt). Ich wüsste jetzt nicht welche
(Fremd)Komponente das Format umgestellt haben könnte.

Deshalb muss man Sir Thornberry wohl recht geben

Gruß, Andreas.

[edit=SirThornberry] Mfg, SirThornberry[/edit]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:52 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