Hallo AndreasZZZ,
ich nehme an, daß es sich hier um eine Hausaufgabe handelt. Aber da Dir noch keiner einen Lösungsansatz geboten hat, habe ich mal auf die Schnelle deine Funktion realisiert. Zumindest bringt sie die gewünschten Ergebnisse.
Vielleicht weiß noch jemand einen anderen Lösungsansatz. Mir fiel jedenfalls im Moment auch nichts Besseres ein, als durch den Monat zu iterieren und die Anzahl der gesuchten Wochentage zu zählen.
Delphi-Quellcode:
function Get_next_Wochentag_pro_Monat(iWelcher, iWochentag: Integer; BaseDate: TDateTime): TDateTime;
var
I: Integer;
Day, Month, Year: Word;
Times: Integer;
begin
Times := 0;
DecodeDate(BaseDate, Year, Month, Day);
if Day > (iWelcher * 7) then
begin
if Month < 12 then
begin
Inc(Month, 1);
end
else
begin
Month := 1;
Inc(Year, 1);
end;
end;
Result := EncodeDate(Year, Month, 1) + Frac(BaseDate);
for I := 1 to 31 do
begin
if DayOfWeek(Result) = iWochentag then
begin
Inc(Times, 1);
if Times = iWelcher then
begin
Break;
end
end;
Result := Result + 1;
end;
end;
bye
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----