AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Datum vergleichen und Ereignis ausgeben
Thema durchsuchen
Ansicht
Themen-Optionen

Datum vergleichen und Ereignis ausgeben

Ein Thema von lima · begonnen am 3. Dez 2008 · letzter Beitrag vom 4. Dez 2008
Antwort Antwort
Seite 1 von 2  1 2      
lima

Registriert seit: 30. Dez 2002
32 Beiträge
 
Delphi 2007 Enterprise
 
#1

Datum vergleichen und Ereignis ausgeben

  Alt 3. Dez 2008, 18:31
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: Datum vergleichen und Ereignis ausgeben

  Alt 3. Dez 2008, 18:44
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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Datum vergleichen und Ereignis ausgeben

  Alt 3. Dez 2008, 18:45
Dein Code ist sehr sinnvoll, weil:
-Du zur Erzeugung eines Datums, die Werte ja kennst ein anschlissendes Zerlegen ist deshalb überflüssig
-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
Markus Kinzler
  Mit Zitat antworten Zitat
lima

Registriert seit: 30. Dez 2002
32 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Datum vergleichen und Ereignis ausgeben

  Alt 3. Dez 2008, 18:49
ICh werde das morgen mal probieren, muß erstmal meine Family versorgen, da meine Frau Spätschicht hat!
  Mit Zitat antworten Zitat
lima

Registriert seit: 30. Dez 2002
32 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Datum vergleichen und Ereignis ausgeben

  Alt 3. Dez 2008, 18:56
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Datum vergleichen und Ereignis ausgeben

  Alt 3. Dez 2008, 18:58
if (Trunc( AktDatum) > Trunc(StartDate)) and (Trunc( AktDatum) < Trunc( EndDate)) then ...
Markus Kinzler
  Mit Zitat antworten Zitat
lima

Registriert seit: 30. Dez 2002
32 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Datum vergleichen und Ereignis ausgeben

  Alt 3. Dez 2008, 21:39
Zitat von mkinzler:
if (Trunc( AktDatum) > Trunc(StartDate)) and (Trunc( AktDatum) < Trunc( EndDate)) then ...
Danke!
  Mit Zitat antworten Zitat
lima

Registriert seit: 30. Dez 2002
32 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Datum vergleichen und Ereignis ausgeben

  Alt 3. Dez 2008, 22:15
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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Datum vergleichen und Ereignis ausgeben

  Alt 3. Dez 2008, 22:18
AktDatum := Date();
Markus Kinzler
  Mit Zitat antworten Zitat
lima

Registriert seit: 30. Dez 2002
32 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Datum vergleichen und Ereignis ausgeben

  Alt 3. Dez 2008, 22:37
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 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