Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Vergleichen von TDate mit DateTimePicker (https://www.delphipraxis.net/167081-vergleichen-von-tdate-mit-datetimepicker.html)

ickehausen 12. Mär 2012 16:19

Vergleichen von TDate mit DateTimePicker
 
Hallo,

ich bin am verzweifel, weil ich den Wald vor lauter Bäumen nicht sehe.
Folgendes Problem:

Zwei DateTimePicker mit dem gleichen Datum (einer für Begin und einer für End), eine Variable vom Typ TDate, ebenfalls das gleiche Datum wie die DateTimePicker z. B. 12.03.2012.

Nun soll abgefragt werden, ob sich die Variable im Bereich zwischen Begin und End befindet. Ich mache dies über eine If-Abfrage:

Delphi-Quellcode:
if (DateTest <= DTPEnd.Date) and (DateTest >= DTPBegin.Date) then
      begin
Das lustige ist, obwohl alle drei Werte, also DateTest, DTPEnd.Date und DTPBegin.Date identisch sind, zumindest laut der Liste der überwachten Ausdrücke, gibt mir (DateTest <= DTPEnd.Date) ein TRUE und (DateTest >= DTPBegin.Date) ein FALSE zurück?!
Kann mir jemand sagen warum? Müsste (DateTest >= DTPBegin.Date) mir nicht auch ein TRUE zurückgeben?

Gruß
Frank

mkinzler 12. Mär 2012 17:29

AW: Vergleichen von TDate mit DateTimePicker
 
In der Eigenschaft .Date wird leider eine voller Timestamp zurückgegeben versuch es mal mit
Delphi-Quellcode:
Trunc (Picker.Date)

DeddyH 12. Mär 2012 17:30

AW: Vergleichen von TDate mit DateTimePicker
 
In TDateTimePicker.Date steht leider nicht nur das Datum, sondern auch eine Uhrzeit. Versuch es einmal mit
Delphi-Quellcode:
var
  Startdate, EndDate: TDateTime;
begin
  StartDate := trunc(DTPBegin.Date);
  EndDate := trunc(DTPEnd.Date) + frac(EncodeTime(23, 59, 59, 999));
  if (DateTest <= EndDate) and (DateTest >= StartDate) then
    //Dein Code
end;
Aus dem Kopf, daher ungetestet.

[edit] Markus war schneller, dafür ich ausführlicher :) [/edit]

ickehausen 13. Mär 2012 06:36

AW: Vergleichen von TDate mit DateTimePicker
 
Danke an Euch, das war es. Mich wunderte es nur, da in beiden DateTimePickern genau das Gleiche steht, das die ein Abfrage TRUE und die andere FALSE ist. Aber ich glaube jetzt verstanden zu haben, dass es an die Operationszeichen liegt!

Nochmnals Danke!!!:-D:-D:-D:thumb:

DeddyH 13. Mär 2012 07:01

AW: Vergleichen von TDate mit DateTimePicker
 
Das liegt nicht an Operationszeichen, sondern am Nachkommaanteil (= Uhrzeit) des jeweiligen Datums.


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