Dear Jim
A better way is to:
interface section
function ODIsLeapYear(Year:integer): Boolean;
function ODDaysThisMonth(Month,Year:integer): Integer;
implementation section
function ODIsLeapYear(Year:integer): Boolean;
begin
Result := (Year mod 4 = 0) { years divisible by 4 are... }
and ((Year mod 100 <> 0) { ...except century years... }
or (Year mod 400 = 0)); { ...unless it's divisible by 400 }
end;
function ODDaysThisMonth(Month,Year:integer): Integer;
const
Day{*word*237}onth: array[1..12] of Integer =
(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); { usual numbers
of days }
begin
Result := Day{*word*237}onth[Month]; { normally, just return number }
if (Month = 2) and ODIsLeapYear(Year) then Inc(Result); { plus 1 in
leap February }
end;
The mod function works by giving you the remainder of a number divided
by another number: eg: 15 mod 10 is 15 divided by 10 which is 1
remainder 5; therefore 5 is the answer. Mod is useful if you have a
loop and want to do something like display where you are every 100th
iteration (eg: if ix mod 100 then StatusBar.SimpleText:='I am on
record '+inttostr(ix); application.processmessages).
To get the whole part of a number divided by another number, use the
div function.
Note DIV and MOD work for integers only.
On Tue, 14 Nov 2000 15:38:38 -0800, Jim McNamara <m...@slic.com>
wrote:
Quote
>I looked through my books and the online help
>and didnt come across an example of how mod works.
>This example contains some code from a book I own
>can someone explain how one of these mod works in the code below ?
>2000 might be a good year to use in the example
>because it is a leapyear.
>I also wanted to mention are all these else clauses
>(except for the last one) really necessary?
>couldnt you just keep using
>if then
>some code;
>if then
>some more code;
>Thanks
>jim
>function date.leapyear: boolean;
>begin
>if (year mod 4 <> 0 ) then
> leapyear:=false
>else
> if (year mod 100 <> 0) then
> leapyear:=true
>else
> if (year mod 400 <> 0) then
>leapyear:=false
>if (year mod 400 =0) then
> leapyear:=true
>else
> if (year mod 100=0) then
>leapyear:=false
>else
>leapyear:=true;
>end;
David