*FWIW*

On 11/11/2013 5:11 PM, Bart wrote:

type
   TDaysPerMonth = Array[1..12] of Word;


function DaysPerMonth(AMonth: Word; IsLeapYear: Boolean): Word;
const
   DaysPerMonthNormal: TDaysPerMonth = (31,28,31,30,31,30,31,31,30,31,30,31);
   DaysPerMonthLeap:   TDaysPerMonth = (31,29,31,30,31,30,31,31,30,31,30,31);
begin
   if IsLeapYear then
     Result := DaysPerMonthLeap[AMonth]
   else
    Result := DaysPerMonthNormal[AMonth];
end;

you do not need any of the above if you change

     Days := (DaysPerMonth(M1, IsLeapYear(Y2)) - D1) + D2 ;

to

      Days := (DaysInAMonth(Y2,M1) - D1) + D2;

this because DaysInAMonth returns the correct number of days and takes leapyear into account automatically... so there's no reason to duplicate existing code with the above type and function ;)

outside of this, what you came up with is almost exactly what i worked my way down to as i was working on my own solution... it took me a while and then when i saw your post, i was astonished at how the mind works at times :LOL:

--
NOTE: No off-list assistance is given without prior approval.
      Please keep mailing list traffic on the list unless
      private contact is specifically requested and granted.

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to