if not(estUnMoisA31Jours(mois)) and (jour:=31) then

Attention ici, là tu affectes 31 à jours et tu regarde si jour est vrai sauf que jour ici n'est pas du type boolean, donc ça ne marchera pas....