Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Vergleich von 2 TDateTime's (https://www.delphipraxis.net/129194-vergleich-von-2-tdatetimes.html)

Satty67 14. Feb 2009 09:31

Re: Vergleich von 2 TDateTime's
 
genau.
Delphi-Quellcode:
StrToTime('08:00') = 0.3333...
Dann gibt die o.g. Rechnung nur 0.9999... statt der gewünschten 1.0

BoolString 14. Feb 2009 10:08

Re: Vergleich von 2 TDateTime's
 
Wenn ich das richtig verstanden habe, dann ging es doch aber nur um Datumswerte. Und dafür müsste die gewählte Variante doch durchaus ausreichend sein. Bei einer Addition von Stunden sieht das Ganze dann tatsächlich anders aus, weil natürlich Bruchteile durch Darstellungsungenauigkeiten unterschlagen werden können. Oder habe ich da jetzt was übersehen?

Jan

Chemiker 14. Feb 2009 10:13

Re: Vergleich von 2 TDateTime's
 
Hallo,

@Satty67: Das ist mir schon klar, dass es bei Gleitkommazahlen zu Rundungsprobleme kommen kann.

@ mkinzler: Ich habe nur das Beispiel von hoika nachgestellt und bei mir wird eine 1 ausgegeben und nicht „ergibt z.B. nicht genau 1.0 (24h = 1 Tag)“ .

Bis bald Chemiker

Hawkeye219 14. Feb 2009 11:05

Re: Vergleich von 2 TDateTime's
 
Hallo,

die Abfrage könnte auch so aussehen:

Delphi-Quellcode:
function TSemesters.IsValidDateToSemester(SemesterId: TSemesterID;
  Date: TDateTime): Boolean;
var SemesterInfo : TSemesterValue;
begin
  ... // SemesterInfo ist ein Record. SemesterBegin und SemesterEnd vom Typ TDate
  Result := {Math.}InRange(Date, StartOfTheDay(SemesterInfo.SemesterBegin),
                                 EndOfTheDay(SemesterInfo.SemesterEnd));
end;
Gruß Hawkeye

BackOrifice 14. Feb 2009 14:15

Re: Vergleich von 2 TDateTime's
 
Erstmal; Danke euch :-D

Es geht tatsächlich nur um Tage, also die Vorkommastellen eines Doubles. Und dafür sollte ja, nach den Aussagen hier, die Genauigkeit reichen. Ich denke, ich nehm die Methode mit dem Math.InRange =)


Vielen Dank.

hoika 16. Feb 2009 07:26

Re: Vergleich von 2 TDateTime's
 
Hallo,

du hast Recht.
Ich wollte mit dem Beispiel nur auf die Gefährlichkeit
des TDateTime hinweisen, wenn man damit rechnet.

Um noch mal auf das Addieren zu kommen.
Delphi-Quellcode:
var
  tdtDateTime: TDateTime;
begin
  tdtDateTime:= StrToTime('08:00')+StrToTime('08:00')+StrToTime('08:00');
  if tdtDateTime=1.0 then
  begin
    // jippi
  end
  else
  begin
    // oops
  end
end;
Bei mir (und bei einem Kunden ... ;( ) landet er in oops .


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 Uhr.
Seite 2 von 2     12   

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