Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verändertes StrToDateTime Verhalten in Delphi 11.3 (https://www.delphipraxis.net/212591-veraendertes-strtodatetime-verhalten-delphi-11-3-a.html)

OlliWW 2. Mär 2023 21:25

Delphi-Version: 11 Alexandria

Verändertes StrToDateTime Verhalten in Delphi 11.3
 
Hallo,

Ich teste nun das neue Delphi 11.3. und ich konnte ein verändertes Verhalten bei der Konvertierung von Strings in DateTime bemerken.

Folgende Strings konvertiere ich mit TryStrToDateTime und vergleiche damit den resultierenden DateTime-Wert und die Antwort der Funktion (True / False):

01.01.2023 25:34:45
Liefert False, was korrekt ist da "25" keine gültige Stunde ist

01.01.2023 12:61:45
Liefert False, was korrekt ist, da "61" keine gültige Minute ist

01.01.2023 12:34:99
Liefert "True", obwohl das keine gültige Sekunde ist. Beim resultierenden DateTime, werden die Sekunden einfach "genullt": 01.01.2023 12:34:00 => Fehler?

01.01.2023 12:34:55
Liefert "True", meiner Meinung nach ist der String auch korrekt, also alles wie es erwartet wird.

01.01.2023 12:34:12:1234567890
Liefert "True", allerdings sind die Sekunden genullt: 01.01.2023 12:34:00 => Fehler?

01.01.2023 12:34:12,1234567890
Liefert "True", allerdings sind die Sekunden genullt: 01.01.2023 12:34:00 => Fehler?

01.01.2023 12:34:12:12
Liefert "True", allerdings sind die Sekunden genullt: 01.01.2023 12:34:00 => Fehler?

01.01.2023 12:34:12,12
Liefert "True", ist meiner Meinung nach auch valide.

Hat jemand ein ähnliches Verhalten bereits gesehen und gibt es dafür einen Workarround oder eine Erklärung? Dass "falsche" Millisekunden Auswirkungen auf die Sekunden haben finde ich schon etwas bedenklich, ebenso wie dass "falsch" Stunden und Minuten nicht interpretiert werden (korrektes verhalten) aber "falsch" Sekunden einfach so durch gehen und "0" liefern.

Viele Grüße

Redeemer 2. Mär 2023 23:25

AW: Verändertes StrToDateTime Verhalten in Delphi 11.3
 
Was kommt denn beim letzten davon raus?

Wenn auch da keine Sekunden rauskommen, würde ich vermuten, dass die Methode die Sekunden ignoriert, wenn sie keine valide Angabe vorfindet. Delphi-Referenz durchsuchenTryStrToDateTime sagt klar: Sekunden sind optional. Aber das nicht erst seit Delphi 11.3.

Uwe Raabe 2. Mär 2023 23:52

AW: Verändertes StrToDateTime Verhalten in Delphi 11.3
 
Implementiert ist es zumindest so, dass es bei einem Fehler in den Sekunden auf ShortTime Format zurück fällt. Daher die 00 Sekunden.

Aber ich hätte bei einem ungültigen String auch ein False erwartet und sehe das aktuelle Verhalten durchaus als diskutabel an. Mach doch mal einen QP Report auf, dann werden wir ja sehen on das Absicht ist.

Jasocul 3. Mär 2023 06:17

AW: Verändertes StrToDateTime Verhalten in Delphi 11.3
 
Du schreibst, dass das ein verändertes Verhalten ist, stellst aber nicht gegenüber, zu welcher Version ind wie dort das Verhalten ist.
Grundsätzlich ist das Verhalten diskussionswürdig, aber ohne zu wissen, wie es vorher war, fehlt eine wichtige Grundlage. Natürlich kann das jeder selbst ausprobieren, aber ... nee. :wink:

himitsu 3. Mär 2023 09:40

AW: Verändertes StrToDateTime Verhalten in Delphi 11.3
 
[Post deleted]

add: neee nee, ich bin mir ganz sicher, dass ich vorhin noch richtig war :oops:

Uwe Raabe 3. Mär 2023 09:47

AW: Verändertes StrToDateTime Verhalten in Delphi 11.3
 
Zitat:

Zitat von himitsu (Beitrag 1519416)
Es gibt Zertifikate

Falscher Thread?

OlliWW 6. Mär 2023 18:57

AW: Verändertes StrToDateTime Verhalten in Delphi 11.3
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe nun mal in aller Ausfürhlichkeit ein paar Tests gemacht mit TryStrToDateTime in Delphi 10.4., 11.1. und 11.3.

Das Verhalten zwischen den ersten beiden und der aktuellsten Version ist definitiv anders.

Hier sieht man links den Input. Rot bedeutet das result ist "false", grün bedeutet das result ist true und der Wert entspricht dem erwarteten Wert. Gelb bedeutet es kommt zwar true zurück, aber das Verhalten ist nicht das erwartete.

Ich habe ein entsprechendes Ticket bei Embarcadero aufgemacht, ich bin mir ziemlich sicher, dass dies ein Fehler ist.

Uwe Raabe 6. Mär 2023 21:32

AW: Verändertes StrToDateTime Verhalten in Delphi 11.3
 
Zitat:

Zitat von OlliWW (Beitrag 1519599)
Ich habe ein entsprechendes Ticket bei Embarcadero aufgemacht, ich bin mir ziemlich sicher, dass dies ein Fehler ist.

Ein Support-Ticket oder einen QP-Eintrag? Bei letzterem hätten wir hier gern die Nummer.

jaenicke 6. Mär 2023 22:12

AW: Verändertes StrToDateTime Verhalten in Delphi 11.3
 
Das ist der neue Report:
https://quality.embarcadero.com/browse/RSP-40711

Vorher wurden mit Delphi 11 diverse andere Einträge als erledigt geschlossen. Kommentar von Dmitry Arefiev:
Zitat:

Before v11 the StrToDateTime was less strict checking format string and input data. In v11 it offers greater flexibility (more formats are supported), and more strict checking.

Jasocul 7. Mär 2023 07:49

AW: Verändertes StrToDateTime Verhalten in Delphi 11.3
 
@OlliWW:
Danke für die Übersicht


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