Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi LastDayofCurrentMonth problem (https://www.delphipraxis.net/180556-lastdayofcurrentmonth-problem.html)

rhodan 28. Mai 2014 18:01

LastDayofCurrentMonth problem
 
hi!

ich möchte in einem Label die letzten verfügbaren arbeitstage des aktuellen monats anzeigen lassen, einschliesslich des aktuellen tages. das klappt soweit auch ganz gut, sprich in einem monat mit 31 tagen wird am 30. "2 resttage diesen monat" angezeigt. allerdings wird dies auch beim letzten tag angezeigt..ich hab versucht es so zu lösen:

Code:
var
  tage: Integer;
  datum1: TDate;
.
.
.

datum1 := now;

  if datum1 = LastDayOfCurrentMonth then
  begin
  tage  := DaysBetween(datum1, LastDayOfCurrentMonth)+1;
  datumlabel.caption.text:=FormatDatetime('d. mmmm yyyy - ', Now)+(inttostr(tage)+' Resttage diesen Monat!')
  end
  else
  begin
  tage  := DaysBetween(datum1, LastDayOfCurrentMonth)+2;
  datumlabel.caption.text:=FormatDatetime('d. mmmm yyyy - ', Now)+(inttostr(tage)+' Resttage diesen Monat!');
  end;
der code in der "else" schleife ist der den ich ursprünglich ausführte und der bis auf den letzten tag funktionierte. allerdings wird "datum1 = LastDayOfCurrentMonth" nicht so ausgeführt bzw erkannt wie ich es mir erhofft habe, es wird immer die else schleife ausgeführt..auch am letzten tag...hat jemand nen tip was ich falsch mache?

danke

DeddyH 28. Mai 2014 18:07

AW: LastDayofCurrentMonth problem
 
TDate ist intern ein double wie TDateTime, enthält also auch einen Nachkommaanteil, daher schlägt der direkte Vergleich mit ziemlicher Sicherheit fehl. Versuch es doch stattdessen mal mit SameDate.

P.S.: Es gibt keine Else-Schleife, genauso wenig, wie es If-Schleifen gibt ;)

rhodan 28. Mai 2014 18:17

AW: LastDayofCurrentMonth problem
 
danke!! :D

Code:
if samedate (datum1,LastDayOfCurrentMonth) then
funktioniert...wieder was dazugelernt...ich hatte mich mit ein paar tutorials zum thema TDate beschäftigt aber dieser befehl war nicht dabei...danke Deddy!! :-D:thumb:

Whookie 1. Jun 2014 17:35

AW: LastDayofCurrentMonth problem
 
Zitat:

Zitat von DeddyH (Beitrag 1260649)
... genauso wenig, wie es If-Schleifen gibt ;)

öh - auch wenn man es nicht machen sollte - natürlich gibt es If-Schleifen!

Sir Rufo 1. Jun 2014 18:59

AW: LastDayofCurrentMonth problem
 
Zitat:

Zitat von Whookie (Beitrag 1260957)
Zitat:

Zitat von DeddyH (Beitrag 1260649)
... genauso wenig, wie es If-Schleifen gibt ;)

öh - auch wenn man es nicht machen sollte - natürlich gibt es If-Schleifen!

Ich bitte hier dringend um ein Beispiel, denn AFAIK gibt es die in Delphi nicht.

himitsu 1. Jun 2014 19:27

AW: LastDayofCurrentMonth problem
 
Jupp, denn alles wo man von IF-Schleifen redet, da macht komischer Weise immer ein anderer Befehl die Schleife.
Delphi-Quellcode:
start: Beep; Sleep(100); if true then goto start;


So gesehn kann man alles mit IF nennen, z.B. eine IF-Nachricht (
Delphi-Quellcode:
if ... then ShowMessage(...)
) oder ein IF-Rülps (
Delphi-Quellcode:
if ... then PlaySound('rülps.wav')
).


Für Schleifen braucht man einen Sprung zurück und in einem IF gibt es immer nur einen Sprung nach vorne, über den Befehl nach dem Then hinweg und mit Else ist es noch Einen mehr.
Und wenn man es genau geben will, dann gibt es bei mehreren Bedingungen im IF, über einige der Bedingungen hinweg auch nochmal ein paar Jumps, aber ebenfalls nur nach vorne.

Perlsau 1. Jun 2014 19:46

AW: LastDayofCurrentMonth problem
 
Ich glaube, das mit den angeblichen IF-Schleifen ist nicht mehr auszurotten, manche kämpfen da sehr verbissen drum :lol:

Dejan Vu 1. Jun 2014 19:49

AW: LastDayofCurrentMonth problem
 
Wartet. Ich habe eine Idee: Nehmen wir an, daß ihr euch darauf einigt, daß ein IF keine Schleife
bekommen kann, weil es keine Schleifenstruktur ist, woran niemand schuld ist, nicht mal die Römer, aber daß es das absolute Recht hat Schleifen auszubilden.

Sozusagen symbolisch. Für unser Ringen gegen die Unterdrückung einzelner Befehle.

Perlsau 1. Jun 2014 19:51

AW: LastDayofCurrentMonth problem
 
Da hätte ich doch jetzt gern mal ein Beispiel dafür, wie du mit IF-Konstrukten eine Schleife abbilden willst.

Valle 1. Jun 2014 19:54

AW: LastDayofCurrentMonth problem
 
Zitat:

Zitat von Dejan Vu (Beitrag 1260967)
Wartet. Ich habe eine Idee: Nehmen wir an, daß ihr euch darauf einigt, daß ein IF keine Schleife
bekommen kann, weil es keine Schleifenstruktur ist, woran niemand schuld ist, nicht mal die Rämer, aber daß es das absolute Recht hat Schleifen auszubilden.

Für die uneingeweihten: https://www.youtube.com/watch?v=GryQiamGxpY (ab 1:15 etwa)

Liebe Grüße,
Cpt. Obvious ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 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