1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
procedure TForm1.Button5daysamonthClick(Sender: TObject);
var aa,mm,jj : Word;
mm1 : Word; // mois initial
wmm : Word; // variables de travail
D : TDateTime;
begin
D := EncodeDate(15,01,2); // jour de départ
DecodeDate(D,aa,mm,jj);
mm1:=mm; // memorisation pour la boucle
wmm:=mm;
repeat
Memo1.Lines.Add(FormatDateTime('dd/mm/yy',D));
D:=IncDay(D,5);
DecodeDate(D,aa,mm,jj);
if (jj mod 5)>0 then
begin
jj:=jj - (jj mod 5);
if jj<1 then jj:=5;
D:=EncodeDate(aa,mm,jj);
end;
// détecter la fin du mois et gère le cas particulier de Février (moins de 5 jours entre le 25 et la fin du mois)
if (jj=30) OR ((wmm=2) and (mm<>wmm)) then
begin
D:=IncDay(EndOfTheMonth(EncodeDate(aa,wmm,1)),-1); // *****
end;
wmm:=mm;
until (mm>mm1+3);
end; |
Partager