Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi TPlannerDatePicker / Null Datum nicht zu fassen (https://www.delphipraxis.net/205250-tplannerdatepicker-null-datum-nicht-zu-fassen.html)

QuickAndDirty 20. Aug 2020 11:57

AW: TPlannerDatePicker / Null Datum nicht zu fassen
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1472106)
Verblüffende bis erschreckende Erkenntnis.

Aber wenn's bei TMS so ist, dann ist das so. Bug oder Feature?

Das ist TMS!

Rolf Frei 20. Aug 2020 13:37

AW: TPlannerDatePicker / Null Datum nicht zu fassen
 
Zitat:

Zitat von NicoleWagner (Beitrag 1472121)
Ganz lieben Dank vor allem an Philipp, doch auch an alle anderen.
Das sind wirklich ganz neue Einsichten.

Ich habe jetzt die Pervers-Lösung mit DateToStr / StrToDate implementiert.
Meine ersten Versuche waren "Nicht-Null".
Die nächsten Tage und Einträge werden zeigen, ob das so bleibt.

Ein grosser Fehler bei vielen Leuten ist nähmlich, dass man meint, die Windows Format Settings entspreche den Delphi Formatregel. Das ist NICHT so und so dürfen die Systemsettingsformate eben nicht in Funktionen wie FormatDateTime verwendet werden! Diese Funktion hat andere Formatregeln (siehe Delphi Hilfe). Insbesondere das "m" Zeichen gilt in Delphi für den Monat und das "n" muss für die Minuten verwendet werden. Windows behandelt das kommlett anderst. Ausserdem sollte man da beim Format immer die ANSI Notation nutzen, da es sonst zu fehlerhaften Datumskonvertierungen kommt, wenn das System andere Einstellungen hat.

Delphi-Quellcode:
// Falsch:
FormatDateTime('dd.mm.yyyy hh:nn:ss', Now))

// Richtig (nur so wird das Systemtdatumsrennzeichen verwendet):
FormatDateTime('dd/mm/yyyy hh:nn:ss', Now))

// Will man immer das Systemdatum nutzen reicht ein s:=DateTimeToStr(Now) und d:=StrToDateTime(s), das dann das Datum im Windows Format ausgibt oder zurückverwandelt. FormatDateTime ist eigentlich nur dazu da, wenn man vom Systemstandard abweichen will.
Der falsche Code führt bei folgendem Code in einer Englischen Windows Region zu einem Datumskonvertierungsfehler:
Delphi-Quellcode:
// Das Datum wird hier mit einem "fixen" Punkt als Trennzeichen geformt, also nicht mit dem Systemtrennzeichen. Es ergibt also immer ein Datum mit Punkt, was mit der USA Windows Region falsch wäre.
s := FormatDateTime('dd.mm.yyyy hh:nn:ss', Now))

// Wenn auf dem System nicht der Punkt das Datumstrennzeichen ist, sondern z.B. "/", führt dieser Aufruf zu einem Konvertierungsfehler!
d := StrToDateTime(s);
Eventuel ist genau das dein Prolbem, dass du da irgenwo FormatDatTime nutzt, das ein falsches Format angeben hat (Punkt anstatt "/").

philipp.hofmann 20. Aug 2020 13:41

AW: TPlannerDatePicker / Null Datum nicht zu fassen
 
Zitat:

zum Thema TMS
Also ich habe mit TMS in Summe nur gute Erfahrung gemacht, sie brauchen nur sehr häufig ein kleines Demo-Projekt, aber dies kann man ja nachvollziehen.

Wenn du keinen Support hast, bekommst du doch eh keine Updates und dann ist deine eigene Fehlerbehebung im Code doch ausreichend. Nur wenn du die Updates bekommst, ist dir doch wichtig, dass deine Fehlerbehebung wieder drinnen ist. Wenn alle die mit Software verdienen, alle Fehlerbehebungen langfristig gratis verteilen, dann müsste der initiale Preis höher sein und alle Nutzer sind davon abhängig, dass es neue Nutzer gibt, die den initialen Preis bezahlen, da es sonst für den Hersteller uninteressant wird. Daher sind faire Supportverträge aus meiner Sicht eine sinnvolle Lösung.

Ich persönlich habe den Support bei TMS, weil die v.a. auch sehr schnell antworten, wenn man mal ein Problem hat. Das macht sich bezahlt.

NicoleWagner 21. Aug 2020 09:53

AW: TPlannerDatePicker / Null Datum nicht zu fassen
 
Ich habe keinen Support mehr bei TMS.
Von denen selbst bin ich begeistet. Da ich jedoch nur für den Eigenbedarf programmiere, bekam ich damals nicht nur einen Sonderpreis, sondern die Aufzahlung für Support ist für mich persönlich unwirtschaftlich.
Wäre ich kommerzielle Programmiererin würde ich ihn mir jedenfalls leisten. In der ersten Zeit nach dem Kauf hatte ich Support und der war vom Feinsten. Forumszugang bei TMS habe ich leider auch keinen mehr. Ich darf nur lesen, nicht posten.

und: Die Null ist zurück, :(
Auch dort, wo ich "now" mit DateToStr reingeschoben habe.
Beim nächsten Versuch: alles in Ordnung, Datum wird korrekt übernommen.

Greife jetzt einmal auf Zwischenergebnisse zu. Eine Ausgabe mit ShowMessage vor StrToDate. Vielleicht werde ich dann schlauer.

Ich bin nur dankbar, dass ich auf die Idee kam, mir den Eintrag überhaupt im Volltext bestätigen zu lassen. Sonst hätte ich alle Einträge seither ans Null-Datum verloren, ohne es überhaupt zu bemerken.

Jumpy 21. Aug 2020 10:25

AW: TPlannerDatePicker / Null Datum nicht zu fassen
 
Ist das denn mit den Datumsen reproduzierbar? Kannst du mal Beispiele nennem was geht und was nicht?

Sherlock 21. Aug 2020 13:20

AW: TPlannerDatePicker / Null Datum nicht zu fassen
 
Ganz ehrlich, der Remotedebugger ist keine fortgeschrittene Magie.

Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz