Muchisimas gracias Gluglu, asi me ha quedado con tu explicación, solo funciona para el mes de agosto, ya es facil aumentar para que funcione cualquier mes.
Código Delphi
[-]
var
fechaIni,fechaFin:TDateTime;
i, diaIni,diaFin,dia31, cantSem, cantDias :Integer;
begin
fechaIni := EncodeDate(2007, 08, 01);
cantSem := WeekOfTheMonth(EncodeDate(2007, 08, 31));
diaIni := DayOfTheWeek(fechaIni);
diaFin := 7-diaIni;
fechaFin := IncDay(fechaIni, diaFin);
showmessage(DateToStr(fechaIni)+'-'+DateToStr(fechaFin));
for i:=2 to cantSem do
begin
fechaIni:=IncDay(fechaFin,1);
if i=cantSem then
begin
cantDias := DaysInAMonth(2007,8);
dia31 := DayOfTheWeek(EncodeDate(2007, 08, cantDias));
fechaFin := IncDay(FechaFin,dia31)
end
else
fechaFin:=IncDay(fechaFin,7);
showmessage(DateToStr(fechaIni)+'-'+DateToStr(fechaFin));
end;
Dime que te parece o puedo mejorarlo.