Contributor: CARL STEINHILBER

{
Since Delphi's TDateTime data type stores dates in
number of days since 1/1/0001, all you need to do is
subtract the TDateTime of the first day of the month
in question from the TDateTime of the first day of the
following month.

The following function will return an integer representing
the number of days in any given month:
}

function daysHathTheMonth(whichMonth, whichYear:integer):integer;
var
   beginDate, endDate :TDateTime;
   beginMonth,endMonth,beginYear,endYear:word;
begin
   beginMonth := whichMonth;
   beginYear := whichYear;
   endMonth := whichMonth + 1;
   endYear := whichYear;
   if beginMonth > 11 then
      begin
          {the month in question is December, so the following
               TDateTime would be January 1st of the following year}
           beginMonth := 12;
           endMonth := 1;
           endYear := whichYear + 1;
      end;
   beginDate := encodeDate(beginYear,beginMonth,01);
   endDate := encodeDate(endYear,endMonth,01);
   daysHathTheMonth:= strToInt(floatToStr(endDate - beginDate));
end;
==============================================================

To test it, just call:
 showMessage(intToStr(daysHathTheMonth(04,1996)));

You can easily add a case statement in order to be able to
pass the function a string such as 'Feb', etc. if you
want, but I find integers/words more convenient since
all of Delphi's Date and Time Routines use them.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Carl Steinhilber         csteinhilber@graphicmedia.com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~