AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi TPlannerDatePicker / Null Datum nicht zu fassen
Thema durchsuchen
Ansicht
Themen-Optionen

TPlannerDatePicker / Null Datum nicht zu fassen

Ein Thema von NicoleWagner · begonnen am 18. Aug 2020 · letzter Beitrag vom 21. Aug 2020
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#1

AW: TPlannerDatePicker / Null Datum nicht zu fassen

  Alt 19. Aug 2020, 13:02
Lokalisierungsprobleme heißt:

Statt 19.08.2020 z. B. 08/19/2020 oder 2020.08.19

Irgendeine Systemeinstellung für u. a. die Datumsdarstellung wird / ist (sporadisch?) "verstrubbelt".

Eventuell kannst Du ja dann, wenn das Datum mal wieder 0 wird, die entsprechenden Systemeinstellungen auslesen und mal in 'ne Textdatei schreiben, um sie Dir zu Gemüte zu führen.

Oder Du setzt Dir beim Programmstart grundsätzlich Datums- und Zeitformat so, wie Du es im Programm erwartest.

In etwa sowas:
Delphi-Quellcode:
// Irgendwo im Formular ...
  private
    { Private-Deklarationen }
    fFormatSettings: TFormatSettings;

// z. B. im FormCreate:
  GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, fFormatSettings);
// Jenachdem, wie Du es brauchst / erwartest.
  fFormatSettings.LongDateFormat := 'DD.MM.YYYY';
  fFormatSettings.LongTimeFormat := 'hh:mm:ss.zzz';
  fFormatSettings.ShortDateFormat := 'DD.MM.YYYY';
  fFormatSettings.ShortTimeFormat := 'hh:mm:ss.zzz';
Wenn nun (sprodisch) eine andere Software (oder der Anwender) mal die Systemeinstellungen für's Datum ändert, wirkt sich das nicht (zwingend) auf Dein Programm aus.
Ob's damit aber wirklich funktioniert, vermag ich nicht zu sagen. Aber 'nen Versuch ist es ja vielleicht wert.

Geändert von Delphi.Narium (19. Aug 2020 um 13:04 Uhr) Grund: Schreibfehler (wie immer)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.436 Beiträge
 
Delphi 12 Athens
 
#2

AW: TPlannerDatePicker / Null Datum nicht zu fassen

  Alt 19. Aug 2020, 13:10
Hinweis:
Das Zeitformat ist nicht immer richtig. ...oder ist das inzwischen korrigiert?
https://www.delphipraxis.net/188843-...s-dummies.html
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
927 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TPlannerDatePicker / Null Datum nicht zu fassen

  Alt 19. Aug 2020, 13:25
Zitat:
Oder Du setzt Dir beim Programmstart grundsätzlich Datums- und Zeitformat so, wie Du es im Programm erwartest.
Und genau dies darf man laut TMSSoftware bei ihrem DatePicker nicht machen, sondern setzt immer das Datum über das Default-Format des Betriebssystemes, daher
  eBookingDate.Text:=DateToStr(Now); und nicht
  eBookingDate.Text:=DateToStr(Now,fFormatSettings); Klingt komisch, is´aber so.

Und wenn man
  eBookingDate.date:=NOW; ausprobiert, wird es je nach Betriebssystem-Einstellung krachen oder funktionieren (obwohl man eigentlich denken würde, hier spiele die Betriebssystem-Einstellung gar keine Rolle, aber auch hier gilt der Sendung-mit-der-Maus-Spruch uneingeschränkt (wobei der Spruch Gerüchten zufolge von Peter Lustig erfunden wurde).
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#4

AW: TPlannerDatePicker / Null Datum nicht zu fassen

  Alt 19. Aug 2020, 13:34
Verblüffende bis erschreckende Erkenntnis.

Aber wenn's bei TMS so ist, dann ist das so. Bug oder Feature?
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
927 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TPlannerDatePicker / Null Datum nicht zu fassen

  Alt 19. Aug 2020, 16:28
Ich persönlich würde es als Bug einordnen und habe den Vorschlag gemacht, dann zumindest das date-Attribut auf ReadOnly zu setzen. Aber macht es auch nur bedingt schöner, weil man das text-Attribut ja auch nur auf bestimmte Art und Weise setzen darf. Richtig sauber wäre es nur, wenn man der Komponente ein FormatSettings spendiert.
  Mit Zitat antworten Zitat
NicoleWagner

Registriert seit: 6. Jul 2010
167 Beiträge
 
Delphi XE3 Professional
 
#6

AW: TPlannerDatePicker / Null Datum nicht zu fassen

  Alt 19. Aug 2020, 16:54
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.
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TPlannerDatePicker / Null Datum nicht zu fassen

  Alt 20. Aug 2020, 13:37
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 "/").

Geändert von Rolf Frei (20. Aug 2020 um 17:49 Uhr)
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
927 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: TPlannerDatePicker / Null Datum nicht zu fassen

  Alt 20. Aug 2020, 13:41
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.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.999 Beiträge
 
Delphi 12 Athens
 
#9

AW: TPlannerDatePicker / Null Datum nicht zu fassen

  Alt 20. Aug 2020, 11:57
Verblüffende bis erschreckende Erkenntnis.

Aber wenn's bei TMS so ist, dann ist das so. Bug oder Feature?
Das ist TMS!
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (20. Aug 2020 um 13:36 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:41 Uhr.
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