Facil Hermano, lo se porque mi hermana le gusta mucho la astrología, los meses 4 (abril), 6(junio), 9(septiembre), y 11(noviembre) simpre tienen 30 días, el mes de febrero si el año es biciesto tiene 29 días de lo contrario tiene 28, por ultimo el resto de los meses 1(enero), 3(marzo), 5(mayo), 7(julio), 8(agosto), 10(octubre) y 12(diciembre) simpre tienen 31 dìas, ahora bien imagino que ya habras deducido como definir en tu programa para saber el ultimo dia del mes excepto con febrero, para lo cual deberas utilizar la función "IsleapYear()", con la que sabrás si el año es biciesto. el codigo de una función que haga el trabajo seria mas o menos así:
Function Ultimo_Dia_Mes(Ano, Mes:Integer):Integer;
Begin
If (Mes >= 1) And (Mes <= 12) Then
If (Mes = 4) Or (Mes = 6) Or (Mes = 9) Or (Mes = 11) Then
Result:= 30
Else If Mes = 2 Then
Begin
If IsLeapYear(Ano) Then
Result:= 29
Else
Result:= 28
End
Else
Result:= 31
Else
ShowMessage('Mes incorrecto');
End;