Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   StrToDate defekt? (https://www.delphipraxis.net/209166-strtodate-defekt.html)

woodie 4. Nov 2021 11:29


StrToDate defekt?
 
Hallo nur eine kurze Frage, ist in Delphi 11 die DateToStr Funktion defekt?

Also ich gebe der Funktion '2.3' rein und erwarte als Rückgabe 02.03.2021, sowie es auch in der Doku steht:

{ StrToDate converts the given string to a date value. The string must
consist of two or three numbers, separated by the character defined by
the DateSeparator global variable. The order for month, day, and year is
determined by the ShortDateFormat global variable--possible combinations
are m/d/y, d/m/y, and y/m/d. If the string contains only two numbers, it
is interpreted as a date (m/d or d/m) in the current year. Year values
between 0 and 99 are assumed to be in the current century. If the given
string does not contain a valid date, an EConvertError exception is
raised. }

Ich setze
ShortDateFormat := 'd/m/y';
DateSeparator := '.';
aber Delphi beachtet es einfach nicht.
Wo steckt der Fehler, in 10.4 ging es noch?

Die Funktion gibt immer nur den default Wert zurück.

Code:
 
 AStr := '2.3';
 AFormatSettings := TFormatSettings.Create();
 AFormatSettings.ShortDateFormat := 'd.m.y';
 AFormatSettings.ShortDateFormat := 'dd.mm.yy';
 AFormatSettings.ShortDateFormat := 'd.M.y';
 AFormatSettings.ShortDateFormat := 'd/m/y';
 AFormatSettings.ShortDateFormat := 'dd/mm/y';
 AFormatSettings.DateSeparator := '.';
 Result := StrToDateDef(AStr, 0, AFormatSettings);

Uwe Raabe 4. Nov 2021 11:43

AW: StrToDate defekt?
 
Du musst für t (Tag) ein d (Day) eintragen.

Edit: OK, hast du mittlerweile gemacht.

woodie 4. Nov 2021 11:50

AW: StrToDate defekt?
 
Also ich nutze 'd.m.y'

und laut Doku steht da:

"If the string contains only two numbers, it is interpreted as a date (m/d or d/m) in the current year. "

aber genau das macht die Funktion nicht, wenn ich nur 2 Zahlen mit Punkt getrennt eingeben, funktioniert es nicht.

Uwe Raabe 4. Nov 2021 11:52

AW: StrToDate defekt?
 
Das ist offenbar bei der Neufassung von ScanDate übersehen worden. (Bedauerlich, dass es dafür keine Testcases gibt)

Kannst du dafür bitte einen QP-Report aufmachen mit Verweis auf die Dokumentation und dass es sich um eine Regression zu 10.4.2 handelt?

woodie 4. Nov 2021 12:00

AW: StrToDate defekt?
 
ich wollte erstmal wissen, ob es ein Fehler ist oder nur ein Anwenderproblem ;)

himitsu 4. Nov 2021 14:14

AW: StrToDate defekt?
 
Verwendet ScanDate/ScanTime überhaupt die FormatStrings?

Mir war so, als wenn da nur einiges Weniges "hartcodiert" war/ist, aber die FormatStings nur zum codieren, aber nicht zum decodieren verwendet würden.



Ich bin mir sicher hier im Forum gab es auch schon mehrere Funktionen, welche diese Strings verwenden, um damit zu decodieren.

Uwe Raabe 4. Nov 2021 14:28

AW: StrToDate defekt?
 
Zitat:

Zitat von himitsu (Beitrag 1497075)
Verwendet ScanDate/ScanTime überhaupt die FormatStrings?

Seit Delphi 11.

woodie 4. Nov 2021 15:02

AW: StrToDate defekt?
 
falls jemand was beitragen möchte:

https://quality.embarcadero.com/browse/RSP-36115

aber echt ärgerlich bei so einer Basisfunktionalität. Auf sowas muss man sich verlassen können. Wenn die an der Basis Änderungen machen, sollten die auch mal den Code testen...

himitsu 4. Nov 2021 15:05

AW: StrToDate defekt?
 
Na da bin ich ja froh, dass ich dieses Jahr zu nix gekommen bin.

Wollte mir vor Langem auch mal wieder soeine Funktion zusammensuchen, die das StringToDateTime "richtig" mit den FormatSettings behandelt.

Uwe Raabe 4. Nov 2021 16:00

AW: StrToDate defekt?
 
Zitat:

Zitat von woodie (Beitrag 1497078)
Auf sowas muss man sich verlassen können. Wenn die an der Basis Änderungen machen, sollten die auch mal den Code testen...

Es hat schon ein paar Beschwerden in diesem Zusammenhang gegeben. Oft war eine undokumentierte Funktionalität nicht mehr gegeben und dann kann man drüber streiten. Aber hier ist es ja dokumentiert. Es geht halt nichts über eine gute Testabdeckung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:29 Uhr.
Seite 1 von 2  1 2      

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