Creo que se podría optimizar de esta manera :
Código Delphi
[-]var
fechaIni, fechaFin : TDateTime;
i : Integer;
begin
i := 1;
while true do begin
fechaIni := EncodeDate(2007, 08, i);
if DayOfTheWeek(fechaIni) <> 1 then begin
fechaFin := EncodeDate(2007, 08, 8-DayOfTheWeek(fechaIni))
i := 8-DayOfTheWeek(fechaIni) + 1;
end
else begin
i := i + 7;
if i > DaysInAMonth(2007,8) then
fechafin := EndOfTheMonth(fechaIni)
else
fechaFin := DayInc(fechaIni,7);
end;
showmessage(DateToStr(fechaIni)+'-'+DateToStr(fechaFin));
if i > DaysInAMonth(2007,8) then Break;
end;
end;
No lo he probado, por lo que no te puedo asegurar si funciona correctamente.