AGB  ·  Datenschutz  ·  Impressum  







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

StrToDate Fehler

Ein Thema von PeterPanino · begonnen am 6. Apr 2007 · letzter Beitrag vom 10. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2      
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#1

StrToDate Fehler

  Alt 6. Apr 2007, 02:53
Hallo,

folgender Fehler tritt auf:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  TodayStr: string;
  TodayDate: TDate;
begin
  TodayStr := DateToStr(Today);
  Form1.Caption := TodayStr;
  TodayDate := StrToDate(TodayStr);
end;
Fehlermeldung: '06-Apr-2007' ist kein gültiges Datum'

Wieso hat Delphi Probleme einen String mit StrToDate zu dekodieren, den es gerade vorher mit DateToStr kodiert hat? Die lokalen Regional-Einstellungen sind ja bei beiden Vorgängen gleich!

Es würde auch nichts nützen, wenn ich meine regionalen Einstellungen für das kurze Datumsformat ändere, denn ich muss ja immer damit rechnen, dass ein Anwender meines Programms genau diese regionalen Einstellungen verwendet!
Miniaturansicht angehängter Grafiken
fehler1_128.gif   vista_209.gif  
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: StrToDate Fehler

  Alt 6. Apr 2007, 06:58
Hai PeterPanino,

Delphi-Referenz durchsuchenStrToDate funktioniert nur wenn in dem Datumsstring ausschliesslich Zahlen und der definierte Dateseperator stehen.

Steht so auch in der Onlinehilfe.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: StrToDate Fehler

  Alt 6. Apr 2007, 07:18
Hallo,

oder anderes gesagt.

DateToStr benutzt die lokalen Ländereinstellungen (lang),
StrToDate nicht.


Heiko
Heiko
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: StrToDate Fehler

  Alt 6. Apr 2007, 11:56
Glaubt ihr, dass es sinnvoll wäre, den String mit einer angepassten Routine zu parsen (vielleicht hat jemand gerade zufällig so eine Routine zur Hand), oder ist die Vielfalt möglicher Regionaleinstellungen zu groß, sodass in der Praxis dabei immer wieder Fehler auftreten können?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: StrToDate Fehler

  Alt 6. Apr 2007, 16:58
Hallo,

ich würde den TDateTime Wert zwischenspeichern
und nicht den String.


Heiko
Heiko
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: StrToDate Fehler

  Alt 6. Apr 2007, 17:03
Zitat von hoika:
Hallo,

ich würde den TDateTime Wert zwischenspeichern
und nicht den String.
Heiko
Ja, du hast recht!
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: StrToDate Fehler

  Alt 7. Apr 2007, 10:34
Somit funktioniert auch ReadDate aus IniFiles nicht, wenn im System die lokalen Regionaleinstellungen für Kurzes Datum auf 'TT-MMM-JJJJ' eingestellt sind, denn ReadDate verwendet implizit StrToDate! (Beispiel: WriteDate schreibt bei diesen Systemeinstellungen z.B. '05-Apr-2007', was dann bei ReadDate prompt zu einem EConvertError-Fehler führt).

Somit sind ReadDate und WriteDate aus IniFiles prinzipiell unbrauchbar!
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: StrToDate Fehler

  Alt 7. Apr 2007, 10:49
Zitat von hoika:
DateToStr benutzt die lokalen Ländereinstellungen (lang),
StrToDate nicht.
Heiko
Stimmt so nicht. StrToDate führt bei mir zu einem Fehler, auch wenn der Datum-String nur aus Zahlen besteht: S. angehängte Fehlermeldung.

Bearbeitet 1: Eigenartigerweise tritt dieser Fehler (s. angehängter Screenshot der Fehlermeldung) nur bei der Ausführung im Debugger auf, bei der normalen Ausführung des Programms tritt er nicht auf! Weiß jemand wieso?

Bearbeitet 2: Berichtigung: Der Fehler tritt sowohl bei der normalen Programmausführung als auch im Debugger auf. Nur die Fehlermeldung erscheint nur im Debugger!
Miniaturansicht angehängter Grafiken
econverterror_476.gif  
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#9

Re: StrToDate Fehler

  Alt 7. Apr 2007, 22:39
Nabend ..,
vielleicht hilft
Delphi-Quellcode:
ShortDateFormat:= 'dd.mm.yyyy';
DateSeparator:= '.';
Mich irritiert allerdings deine Fehlermeldung!
Zitat:
Im Projekt ... mit der Meldung "25.09.2006' ist kein gültiges Datum' ...

Sind die 'Gänsefüßchen' etwa auch in dem Datumsstring drin?

LG Mario
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: StrToDate Fehler

  Alt 8. Apr 2007, 01:29
Zitat von Hobby-Programmierer:
Nabend ..,
vielleicht hilft
Delphi-Quellcode:
ShortDateFormat:= 'dd.mm.yyyy';
DateSeparator:= '.';
Mich irritiert allerdings deine Fehlermeldung!
Zitat:
Im Projekt ... mit der Meldung "25.09.2006' ist kein gültiges Datum' ...

Sind die 'Gänsefüßchen' etwa auch in dem Datumsstring drin?
LG Mario
Nein, natürlich nicht! Ich hab alles haarklein ausprobiert. Offensichtlich funktioniert StrToDate nur dann, wenn die im String enthaltenen Datum-Separatoren mit dem im System definierten Datum-Separator übereinstimmt. Dabei wird die globale Variable DateSeparator offensichtlich durch das ERSTE Separatorzeichen definiert, das im Definitionsstring für das kurze Datum in den lokalen Regionaleinstellungen enzhalten ist! (Es kann ja auch sein, dass der Anwender einen kurzen Datumstring mit unterschiedlichen Separatoren definiert, z.B. "TT.MMM JJJJ" = Punkt und Leerzeichen).

Ich schreibe gerade eine Erweiterung der StrToDate-Funktion, die all diese Fälle abdeckt und stelle sie dann hier rein.

Ach ja, das alles unter Vista.
  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 23:28 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