Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Min-/Max-Problem mit DateTimePicker / Rundung von Datum (https://www.delphipraxis.net/36323-min-max-problem-mit-datetimepicker-rundung-von-datum.html)

stoermi 18. Dez 2004 14:20


Min-/Max-Problem mit DateTimePicker / Rundung von Datum
 
Hallo!

Ich habe ein kleines Problem mit der Min/Max-Einstellung des Datums für einen DateTimePicker...

Ich hole mir aus einer Datenbank ein Datum.
Dieses plus 1 soll das maximale Datum des TDPicker sein.
Das minimale Datum soll ein durch "now" oder einen vorhergehenden DTPicker bestimmtes Datum ebenfalls addiert mit eins sein.
Dann soll dem DateTimePicker das maximale Datum zugewiesen werden.

Soweit, so gut. Ein Problem bekomme ich nur, wenn das maximale Datum zufällig gleich dem minimalen Datum ist.

Da das minimale Datum ein genuer Wert, mit Minuten und Sekunden-Wert ist (Bsp. 38387.124), und das Datum aus der Datenbank nur das Datum ohne Minuten, usw enthält (Bsp. 38387) kommt es zwingend zum Fehler. Der Wert ist ja dann kleiner als der kleinstmögliche...

Jetzt die eigentliche Frage. Wie runde ich ein TDateTime bzw. TDate genau auf den aktuellen Tag.
Es muss ja immer eine Abrundung sein.

Das Problem war mir bisher nicht bewusst, dumm nur, dass TDate eben auch die Time-Werte (Nachkommastellen) mitspeichert, was sowieso sinnlos ist...!

QuickAndDirty 18. Dez 2004 14:53

Re: Min-/Max-Problem mit DateTimePicker / Rundung von Datum
 
und ich dachte du hast probleme mit dem MinMaxAlgo so a la Komponente mit KI

stoermi 18. Dez 2004 15:47

Re: Min-/Max-Problem mit DateTimePicker / Rundung von TDate
 
Zitat:

Zitat von QuickAndDirty
und ich dachte du hast probleme mit dem MinMaxAlgo so a la Komponente mit KI

Nee, sorry. Ist nur eine delphi-spezifische Frage... Steht aber auch so im Titel!

stoermi 18. Dez 2004 16:21

Re: Min-/Max-Problem mit DateTimePicker / Rundung von Datum
 
Hab jetzt eine Lösung, wie ich diesen TDate-Wert auf einen reinen Datumswert bringe:

Delphi-Quellcode:
datum := StrToDate(DateToStr(datum));
Finde ich aber selbst irgend wie schwachsinnig... Genau wie ein TDate, dass genauso aufgebaut ist wie TDateTime... Aber naja! Wenn jemand eine andere Lösung hat, bitte melden!

Urmel 18. Dez 2004 16:24

Re: Min-/Max-Problem mit DateTimePicker / Rundung von Datum
 
Zitat:

Zitat von stoermi
Hab jetzt eine Lösung, wie ich diesen TDate-Wert auf einen reinen Datumswert bringe:...

Hallo stoermi,

schneide doch einfach den Teil für die Zeit (nachkommastellen) ab.
Delphi-Quellcode:
datum := TRUNC (datum_mit_zeit);

stoermi 18. Dez 2004 16:43

Re: Min-/Max-Problem mit DateTimePicker / Rundung von Datum
 
Zitat:

Zitat von Urmel
schneide doch einfach den Teil für die Zeit (nachkommastellen) ab.
Delphi-Quellcode:
datum := TRUNC (datum_mit_zeit);

Hi Urmel!

Stimmt, hast recht, das geht auch. An Trunc hab ich mit keiner Silbe gedacht. Aber man weiss ja dann auch nie, ob das auch mit TDate geht. Eigntlich kommt da ja ein Integer raus. Funktioniert aber! Danke!

Stevie 20. Dez 2004 14:23

Re: Min-/Max-Problem mit DateTimePicker / Rundung von Datum
 
Zitat:

Zitat von stoermi
Aber man weiss ja dann auch nie, ob das auch mit TDate geht. Eigntlich kommt da ja ein Integer raus. Funktioniert aber! Danke!

Richtich! TDateTime ist eigentlich ein Double, bei dem der ganzzahlige Zeil das Datum darstellt, und der Nachkommateil die Uhrzeit. Das blöde, was die meisten Fehler verursacht, ist folgendes: TDate und TTime sind auch nur TDateTime und bei der Vermischung kann es zu Fehlern kommen. Also Trunc(Datum_mit_Zeit) = Datum und Frac(Datum_mit_Zeit) = Zeit... Nur so als Info! ;-)


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