[fpc-pascal] Sample unit code

Pete Cervasio cervasio at airmail.net
Sat Apr 4 20:46:58 CEST 2009

On Saturday 04 April 2009 11:40:03 Francisco Reyes wrote:
> I guess I could try one unit at a time until I find a simple one, but I
> figure if anyone knows of a simple unit that may be easy to read, that may
> be a better starting point.

Here's a simple unit that may help.  I have occasion to add time values in my 
programs.  I don't care that 249 seconds isn't "proper time" and in the form 
of 4 minutes and 9 seconds, I just want it encoded into a TDateTime value so 
I can add it to another TDateTime value.

Save this as my_unit.pp:

unit my_unit;


{ Everything out here in the interface section is seen by programs
  that use this unit }

function EncodeTimeValue (hr, min, sec, msec: Integer): TDateTime;


{ Everything down here is hidden to the outside }

  HoursPerDay = 24;
  MinutesPerDay = 60 * HoursPerDay;
  SecondsPerDay = 60 * MinutesPerDay;
  MilliSecsPerDay = 1000 * SecondsPerDay;

function EncodeTimeValue (hr, min, sec, msec: Integer): TDateTime;
  Result := hr / HoursPerDay + 
            min / MinutesPerDay +
            sec / SecondsPerDay +
            msec / MilliSecsPerDay;


There you go, one complete unit.  In a main program (or even in another unit), 
all you have to do is use that unit and you can then call the function all 
you want:

program test_my_unit;


   Writeln ('24 hours and 720 minutes is 1.5 days: ',
             EncodeTimeValue (24, 720, 0, 0));
   { Uncomment this next to see an error, because HoursPerDay is private }
   { Writeln ('Hours per day is: ', HoursPerDay); }

To add a new routine, put it down in the implementation section, and copy 
the 'procedure foo(blahblah)' or 'function bar(blahblah): blah' part up to 
the interface section.

There are also 'initialization' and 'finalization' sections too, but you can 
probably ignore those until you understand units better.  

I hope this is helpful.  The code above is released to the public domain, if 
anyone cares to use it.

Best regards,
Pete C.

Cliches are a dime a dozen; that's why I avoid them like the plague.

More information about the fpc-pascal mailing list