Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datum vergleichen und Ereignis ausgeben (https://www.delphipraxis.net/125287-datum-vergleichen-und-ereignis-ausgeben.html)

lima 3. Dez 2008 17:31


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:
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;
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.

DeddyH 3. Dez 2008 17:44

Re: Datum vergleichen und Ereignis ausgeben
 
Kannst Du hiermit etwas anfangen?

Delphi-Quellcode:
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;
[edit] Code um überflüssige Variable gekürzt [/edit]

mkinzler 3. Dez 2008 17:45

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:
if Trunc( Datum) = Trunc( rdatum)
das selbe bewirkt
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

lima 3. Dez 2008 17:49

Re: Datum vergleichen und Ereignis ausgeben
 
ICh werde das morgen mal probieren, muß erstmal meine Family versorgen, da meine Frau Spätschicht hat!

lima 3. Dez 2008 17:56

Re: Datum vergleichen und Ereignis ausgeben
 
Zitat:

Zitat von mkinzler
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

Ja, das wäre eine Idee, aber wie macht man das?

mkinzler 3. Dez 2008 17:58

Re: Datum vergleichen und Ereignis ausgeben
 
Delphi-Quellcode:
if (Trunc( AktDatum) > Trunc(StartDate)) and (Trunc( AktDatum) < Trunc( EndDate)) then ...

lima 3. Dez 2008 20:39

Re: Datum vergleichen und Ereignis ausgeben
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
if (Trunc( AktDatum) > Trunc(StartDate)) and (Trunc( AktDatum) < Trunc( EndDate)) then ...

Danke!

lima 3. Dez 2008 21:15

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;

mkinzler 3. Dez 2008 21:18

Re: Datum vergleichen und Ereignis ausgeben
 
Delphi-Quellcode:
AktDatum := Date();

lima 3. Dez 2008 21:37

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 05:00 Uhr.
Seite 1 von 2  1 2      

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