![]() |
Datum vergleichen und Ereignis ausgeben
Ich wollte eine Routine für folgendes Szenario schreiben, bin aber hängengeblieben:
Zwischen dem 01.02.2009 und dem 10.02.2009 soll ein String ausgegeben werden. Ich hatte bis jetzt folgenden Code:
Delphi-Quellcode:
Damit ich nicht jedesmal eine Routine für jedes Datum zwischen dem 01.02.2009 und dem 10.02.2009 schreiben muß, hat da jemand eine Idee wie man das in komprimierter Form in einer Routine schreiben kann? Außerdem besteht das Problem, wenn der 01.02.2009 ist, dann funktioniert das Ganze und irgendein Datum nach dem 01.02.2009, dann funktioniert das Ganze nicht mehr, mit der Routine oben. Wäre schön wenn Jemand helfen könnte.
var
rtag, rmonat, rjahr : Word; tag, monat, jahr : Word; datum : TDate; begin datum := EncodeDate(2009,02,01); DecodeDate (datum,rjahr,rmonat,rtag); DecodeDate (date,jahr,monat,tag); if (rmonat = monat) AND (rtag = tag) AND (rjahr=jahr) then showmessage ... begin datum := EncodeDate(2009,02,02); DecodeDate (datum,rjahr,rmonat,rtag); DecodeDate (date,jahr,monat,tag); if (rmonat = monat) AND (rtag = tag) AND (rjahr=jahr) then showmessage ... begin ... begin ... begin ... begin ... begin ... begin ... begin ... begin ... end; end; end; end; end; end; end; end; end; end; |
Re: Datum vergleichen und Ereignis ausgeben
Kannst Du hiermit etwas anfangen?
Delphi-Quellcode:
[edit] Code um überflüssige Variable gekürzt [/edit]
uses DateUtils;
procedure ListDaysBetween(StartDate, EndDate: TDate; const sl: TStrings); begin sl.BeginUpdate; try sl.Clear; while Trunc(StartDate) <= Trunc(EndDate) do begin sl.Add(FormatDateTime('dd.mm.yyyy',StartDate)); StartDate := IncDay(StartDate,1); end; finally sl.EndUpdate; end; end; |
Re: Datum vergleichen und Ereignis ausgeben
Dein Code ist sehr sinnvoll, weil:
-Du zur Erzeugung eines Datums, die Werte ja kennst ein anschlissendes Zerlegen ist deshalb überflüssig -
Delphi-Quellcode:
das selbe bewirkt
if Trunc( Datum) = Trunc( rdatum)
Für eine Zeitspanne würde ich einfach überprüfen ob das Datum zwischen den Grenzdaten liegt und nicht für jedes Datum dazwischen überprüfen |
Re: Datum vergleichen und Ereignis ausgeben
ICh werde das morgen mal probieren, muß erstmal meine Family versorgen, da meine Frau Spätschicht hat!
|
Re: Datum vergleichen und Ereignis ausgeben
Zitat:
|
Re: Datum vergleichen und Ereignis ausgeben
Delphi-Quellcode:
if (Trunc( AktDatum) > Trunc(StartDate)) and (Trunc( AktDatum) < Trunc( EndDate)) then ...
|
Re: Datum vergleichen und Ereignis ausgeben
Zitat:
|
Re: Datum vergleichen und Ereignis ausgeben
Ich hab jetzt folgendes, aber das klappt nicht.
Delphi-Quellcode:
procedure ListDaysBetween(StartDate, EndDate: TDate; const sl: TStrings);
begin sl.BeginUpdate; try sl.Clear; while Trunc('01.02.2009') <= Trunc('10.02.2009') do begin sl.Add(FormatDateTime('01.02.2009',StartDate)); StartDate := IncDay(StartDate,1); end; finally sl.EndUpdate; end; end; procedure TForm1.FormCreate(Sender: TObject); Aktdatum : TDate; begin if (Trunc(Aktdatum) > Trunc('01.02.2009')) and (Trunc(Tdate) < Trunc('10.02.2009')) then showmessage ... end; |
Re: Datum vergleichen und Ereignis ausgeben
Delphi-Quellcode:
AktDatum := Date();
|
Re: Datum vergleichen und Ereignis ausgeben
Also irgendwo hängts jetzt bei mir, das will einfach net klappen
Das Programm soll ja nur prüfen, ob das Datum zwischen dem 01.02.2009 und dem 10.02.2009 liegt und dann eine Messaage ausgeben. Die Message würde funktionieren, nur die Überprüfung irgendwie nicht. If Datum zwischen dem 01.02.2009 und dem 10.02.2009 liegt, then
Delphi-Quellcode:
procedure ListDaysBetween(StartDate, EndDate: TDate; const sl: TStrings);
begin sl.BeginUpdate; try sl.Clear; while Trunc('01.02.2008') <= Trunc('10.02.2009') do begin sl.Add(FormatDateTime('01.02.2009',StartDate)); StartDate := IncDay(StartDate,1); end; finally sl.EndUpdate; end; end; procedure TForm1.FormCreate(Sender: TObject); var Aktdatum : Date; Startdate : TStrings; begin if (Trunc(Aktdatum) > Trunc(Startdate))) and (Trunc(Tdate) < Trunc(EndDate))) then showmessage ... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 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