![]() |
CompareDateTime unter TD 2006 ?
Guten Morgen!
Also mein Programm läuft Tag und Nacht. Ab genau 01:00 Uhr möchte ich, dass eine Variable auf TRUE gesetzt wird. Ab 08:00 Uhr wieder auf FALSE. Ist ein Uhrzeitvergleich ausreichend oder sollte ich das Datum mitprüfen? Nun hab ich über die Forensuche festgestellt, dass diese Datum/Uhrzeit Vergleiche recht oft disskutiert wurden. Dabei wird häufig auf eine CompareDateTime Funktion verwiesen.
Delphi-Quellcode:
Das Lessthanvalue ist noch unbekannt, hab auch ne variable -> ergebnis: TValueRelationship deklariert, ging aber auch nicht. Funktioniert mein Vorhaben mit CompareDateTime oder reicht auch ein CompareTime?
Unit
DateUtils ... procedure TFlogin.Button1Click(Sender: TObject); begin if CompareDateTime(now, StrToDateTime('21.03.2007 10:08:00')) = LessThanValue then showmessage('now liegt vor 21.03.2007 10:08:00') else showmessage('now liegt hinter 21.03.2007 10:08:00'); end; Bzw. wie bekomme ich das ohne Fehler kompiliert ;P |
Re: CompareDateTime unter TD 2006 ?
Delphi-Quellcode:
function MittenInDerNacht(zeit:TDateTime):boolean;
var startzeit, endzeit: TDatetime; begin zeit := Frac(zeit); // Uhrzeit Anteil abtrennen; das Datum wird also ausgeblendet startzeit := EncodeTime(1,0,0,0); // 1 Uhr endzeit := EncodeTime(8,0,0,0); // 8 Uhr result := (zeit >= startzeit) and zeit <= endzeit); end; |
Re: CompareDateTime unter TD 2006 ?
Oh vielen Dank für die Antwort!
Ich hab in der Zwischenzeit folgendes zusammengeschustert:
Delphi-Quellcode:
Der Aufruf z.B.
function DateTimeDiff_m(date1, date2: TDateTime): string;
var days, hours, minutes, secs: integer; difference: real; begin difference:=date2-date1; days:=round(difference-Frac(difference)); difference:=Frac(difference)*24; hours:=round(difference-Frac(difference)); difference:=Frac(difference)*60; minutes:=round(difference-Frac(difference)); difference:=Frac(difference)*60; secs:=round(difference-Frac(difference)); result:=IntToStr(minutes); end;
Delphi-Quellcode:
Ich teste gleich mal shimas version!
procedure TFlogin.Button1Click(Sender: TObject);
begin if StrToInt(DateTimeDiff_m(now, StrToDateTime('22.03.2007 01:00:00'))) < 0 then begin //Variable auf True setzen weil die Minuten ins negative gehen //andere Anweisungen end else begin //Variable auf FALSE setzen, der result ist noch positiv //andere Anweisungen end; |
Re: CompareDateTime unter TD 2006 ?
Ich nochmal!
Also die Funktion von shmia läuft ebenfalls und ist 1000 mal intelligenter als meine knauperei. Es fehlte nur ein kleines Klämmerchen :thumb:
Delphi-Quellcode:
Super Danke !
function MittenInDerNacht(zeit:TDateTime):boolean;
var startzeit, endzeit: TDatetime; begin zeit := Frac(zeit); // Uhrzeit Anteil abtrennen; das Datum wird also ausgeblendet startzeit := EncodeTime(1,0,0,0); // 1 Uhr endzeit := EncodeTime(8,0,0,0); // 8 Uhr result := (zeit >= startzeit) and [b]([/b]zeit <= endzeit); end; |
Re: CompareDateTime unter TD 2006 ?
Bitte keine HTML-Tags im Delphi Quellcode.
1. Funktioniert's nicht :) 2. Verwirrten sie... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:27 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