Hola.
Llevo tiempo utilizando esta función y va muy bien. Le pasas una fecha y te devuelve el numero de dias del mes.
Código Delphi
[-]
function DiasMes(fecha: TDateTime): integer;
var
PrimerDiaMes, PrimerDiaMesSiguiente : TDateTime;
anyo, mes, dia: Word;
begin
DecodeDate( fecha, anyo, mes, dia );
primerDiaMes := EncodeDate(anyo, mes, 1);
primerDiaMesSiguiente := IncMonth(primerDiaMes, 1);
result := Round(primerDiaMesSiguiente - primerDiaMes);
end;
Saludos