AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

DaysInAMonth vs. DaysInMonth

Ein Thema von Delbor · begonnen am 4. Nov 2020 · letzter Beitrag vom 4. Nov 2020
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

DaysInAMonth vs. DaysInMonth

  Alt 4. Nov 2020, 15:37
Delphi-Version: 5
Hi zusammen

Ich bearbeite gerade ein Uraltprogramm, das ich seinerzeit mit Delphi2007 zuletzt gespeichert habe - aktuell gibt mir eine Methode in einem Stringgrid einen vollen Monat ab einem gegebenen Datum aus, wobei die volle Woche auch dann ausgegeben wird, wenn das gegebene Datum (immer der erste des gewünschten Monats) ein Freitag oder sogar ein Sonntag ist(ähnlich der VCL-Komponente).
Berechnet werden Wochen ausschliesslich mit dem Montag als Starttag.
Noch unbestimmt ist allerdings das Ende des angezeigten Monats. Die Prozedur:
Delphi-Quellcode:
procedure Ta.BtnZweiHorzWeeksMontagClick(Sender: TObject);
  var i,j,y, Nr,x : Integer; Jahr,Woche: Word;
       Today : String;ADate,Datum:TDateTime;
begin
   ADate := DateTimePicker2.Date; //Übergeben des Anfangdatums
   Nr := DayofTheWeek(ADate); //Tagesnummer ermitteln : 1. Wochentag := Montag
   Today := Wochentage[(NR-(NR-1))];
   Datum := (ADate-(NR-1));
   i := 0;
   j := 2;
   x := 1;
   y :=1;
   while i <=6 do // Dies schreibt 7 Wochenblöcke ins Stringgrid
   begin
      inc(i);
      while j <= 8 do begin
         if j = 2 then begin
           DateToWeek(Datum, Woche, Jahr);
           StrG_HoizontalWochen.Cells[y,x] := 'Woche '+IntToStr(Woche); {1 ist die Spalte,  X ist die Zeile}
         end;
         StrG_HoizontalWochen.Cells[0,j]:= Today;
         StrG_HoizontalWochen.Cells[y,j]:= DateToStr(Datum);
         Inc(j);
         Datum := Datum +1;
         Nr := DayofTheWeek(Datum); //Tagesnummer ermitteln : 1. Wochentag Montag
         Today := Wochentage[Nr];
      end;
      Inc(y);
      j := 2;
   end;
end;
Das sieht dann so aus:
wochenkalender-2.jpg
In diesem Fall ist der letzte Januar bereits in der zweitletzten Woche und die restlichen Tage als die des Folgemonats eingetragen. Es dürften allerdings nur gerade die letzen Tage der letzten Woche bis zum Monatsende eingetragen sein - so, wie es in TMonthCalendar gelöst ist.

Da bieten sich nun die beiden Funktionen aus dem Titel an. Wobei die eine allerdings expliziit das Jahr und den Monat benötigt und die andere nur gerade einen TDateTime-Wert.
Kann es sein, dass sich die beiden in der Zuverlässigkeit unterscheiden(29. Februar)?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
bcvs
Online

Registriert seit: 16. Jun 2011
668 Beiträge
 
Delphi 12 Athens
 
#2

AW: DaysInAMonth vs. DaysInMonth

  Alt 4. Nov 2020, 15:59
DaysInMonth ruft intern DaysInAMonth auf.
Sollte also kein Unterschied sein.
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: DaysInAMonth vs. DaysInMonth

  Alt 4. Nov 2020, 16:02
Hi bcvs

Vielen Dank!
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:28 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