Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehlermeldung: 1.1.2013 ist kein gültiges Datum (https://www.delphipraxis.net/175286-fehlermeldung-1-1-2013-ist-kein-gueltiges-datum.html)

Lemmy 11. Jun 2013 09:31

Delphi-Version: 7

Fehlermeldung: 1.1.2013 ist kein gültiges Datum
 
Hallo,

habe bei mir in einem Projekt folgenden Code:

Delphi-Quellcode:
var Temp: TDateTime;
...
begin
...
  Temp := EncodeDate(Jahr,Monat,Tag);
...
in dieser Zeile tritt bei einem Anwender (und nur bei dem) der Fehler auf:

EConvertError: '01.01.2013' ist kein gültiges Datum

OS ist WIn7 x64. Das Programm läuft aber (seit Jahren) auf anderen WIn7 x64 ohne Probleme. Auf anderen Rechnern (auch mit Win7) des Anwenders läuft die Software auch ohne Probleme.

Ich habe jetzt aktuell keinerlei Idee was denn eigentlich das Problem ist. Erst dachte ich an die Systemeinstellungen, aber EncodeDate verwendet doch diese Einstellungen. Hat jemand von Euch ne Idee?

Grüße

arnof 11. Jun 2013 09:35

AW: Fehlermeldung: 1.1.2013 ist kein gültiges Datum
 
ist ein beliebtes Windows 7 Problem, wenn es vorinstalliert ist.

Das steht intern irgendwie auf Englisch wenn man aber unter Regions und Spracheinstellungen schaut, sieht man da oft das es auf Deutsch eingestellt ist :twisted:

Lösung: einmal auf Englisch stellen Übernehmen und schließen und dann wieder auf Deutsch stellen und schon geht es :thumb:

Mavarik 11. Jun 2013 10:06

AW: Fehlermeldung: 1.1.2013 ist kein gültiges Datum
 
Zitat:

Zitat von arnof (Beitrag 1218175)
ist ein beliebtes Windows 7 Problem, wenn es vorinstalliert ist.

Das steht intern irgendwie auf Englisch wenn man aber unter Regions und Spracheinstellungen schaut, sieht man da oft das es auf Deutsch eingestellt ist :twisted:

Lösung: einmal auf Englisch stellen Übernehmen und schließen und dann wieder auf Deutsch stellen und schon geht es :thumb:

Und das sollen alle User auch machen? Setzt doch einfach die Format-Settings richtig beim Programmstart.

Mavarik

arnof 11. Jun 2013 10:17

AW: Fehlermeldung: 1.1.2013 ist kein gültiges Datum
 
Nö sicher nicht, die Formatsetting sollte man i.d.R. nicht umschalten.

Das obige Problem ist ein beliebter WIN7 Bug aus der Systembuilderversion, welches man auf dem und auf dem zweiten Blick nicht versteht! Erst wenn man sich die Formatierungssetting anschaut, kommt man dem Problem näher, warum der 1.1.2013 kein Datum ist!

Ich habe das so gelöst, das ich den beliebten Befehl aus der Sysutil StrtoDate umgeschrieben habe, so das er immer geht und keine dummen Konvertierungsfehlermeldungen mehr bringt :thumb:

Das gilt auch für andere dummen Meldungen zum Thema Konvertierung und welcher Depp hat die überhaupt programmiert bei Borland (das kommt noch aus dieser Zeit) :!:

DeddyH 11. Jun 2013 10:26

AW: Fehlermeldung: 1.1.2013 ist kein gültiges Datum
 
Man könnte aber stattdessen auch die überladene Version verwenden, bei der man die FormatSettings angeben kann.

Lemmy 11. Jun 2013 10:29

AW: Fehlermeldung: 1.1.2013 ist kein gültiges Datum
 
Zitat:

Zitat von Mavarik (Beitrag 1218186)
Und das sollen alle User auch machen? Setzt doch einfach die Format-Settings richtig beim Programmstart.

???? Warum soll ich zum Geier die FOrmat-Settings setzen? Das weiß doch der Anwender besser, welches Format er wo sehen will....


Nachtrag: Der Tipp mit den Ländereinstellungen umstellen hat funktioniert. Danke!

pustekuchen 11. Jun 2013 10:38

AW: Fehlermeldung: 1.1.2013 ist kein gültiges Datum
 
Vielleicht helfen dir diese Methoden weiter:

Delphi-Quellcode:
GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, formatSettings);
TryEncodeDate(Jahr,Monat,Tag);

sx2008 11. Jun 2013 11:54

AW: Fehlermeldung: 1.1.2013 ist kein gültiges Datum
 
Zitat:

Zitat von arnof (Beitrag 1218188)
Das obige Problem ist ein beliebter WIN7 Bug aus der Systembuilderversion, welches man auf dem und auf dem zweiten Blick nicht versteht!

Das kann ich so auch bestätigen.
Das Datumsformat ist innerhalb von Windows inkonsistent gespeichert.
Daher bekommen nicht nur Delphi-Programme sondern auch Programme aus anderen Compilern Schwierigkeiten.
Die richtige Abhilfe ist daher das ursprüngliche Problem zu beheben.

Sinnvoll wäre es beim Programmstart das Datumsformat auf unterschiedliche Weise abzufragen und bei einem Unterschied Alarm zu schlagen.
Leider ist es so, dass sobald man den Trick mit dem Umstellen auf Englisch und wieder zurück vorgenommen hat, man den fehlerhaften Zustand nicht mehr reproduzieren kann.
Daher ist es etwas schwierig dem Problem auf den Grund zu gehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:24 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