[Back to MISC SWAG index] [Back to Main SWAG index] [Original]

    (*
    > Is it possible to display date and time of compilation from
    > a program compiled under Borland Pascal?  If yes, how?

    if you mean like C programs can do, yes it is possible. it takes an
    external utility, a .BAT file, and a "special" line in your program's
    CONST section. C programs have a preprocessor that looks for and
    replaces tokens with certain information. we just create our own for
    this special need/desire...

    here's what the "special" line in the program source has to look like...
    if it doesn't look just like this, it will NOT work correctly...

    const
      progname      : string[6]  = 'PostIt';
      MergeCode     : string[57] = 'Product of Quartz Crystal Software';
    > {$I compiled}
      cfgfile       : string[10] = 'POSTIT.CFG';
      tearline      : string[4]  = '--- ';

    the key to this is that you have to have the line in a section of
    CONST's that are actually used. if none of the other four CONST's above
    were used in the program, the time and date of the compile would not be
    included in the final .EXE file. whether you display it on the screen or
    not is your choice.

    first, the .BAT file i use to compile programs with...

    @echo off
    rem **********************************************************
    rem * COMPIT.BAT                                             *
    rem *                                                        *
    rem * uses a 4DOS specific option %& to pass the rest of the *
    rem * command line on to the TPC compiler                    *
    rem *                                                        *
    rem * TPPP is our Turbo Pascal PreProcessor utility <<smile>>*
    rem **********************************************************
    if exist compiled.pas del compiled.pas
    if '%1' == '' goto error
    tppp
    tpc /ic:\tp /uc:\tp /tc:\tp /oc:\tp %&
    goto end
    :error
    echo
    echo What file to compile?
    echo.
    echo  ie: COMPIT thisfile.pas
    echo.
    :end

    now the source to TPPP...
    *)

    program Turbo_Pascal_Pre_Processor;

    { this program started out as a preprocessor but i've not had a }
    { chance to do more with it than to hard code only a time/date  }
    { string for an include file :(                                 }

    uses Dos;

    var thefile : text;

    function DATE : string;
    const
      months : array [1..12] of String[3] =
        ('Jan','Feb','Mar','Apr','May','Jun',
         'Jul','Aug','Sep','Oct','Nov','Dec');
    var
      y, m, d, dow : Word;
      daystr  : string;
      yearstr : string;
    begin
      GetDate(y,m,d,dow);
      str(d,daystr);
      str(y,yearstr);
      DATE := daystr + ' ' + months[m] + ' ' + yearstr;
    end;

    function TIME : string;
    var
      h, m, s, hund : Word;
      function LeadingZero(w : Word) : String;
      var
        s : String;
      begin
        Str(w:0,s);
        if Length(s) = 1 then
          s := '0' + s;
        LeadingZero := s;
      end;
    begin
      GetTime(h,m,s,hund);
      TIME := LeadingZero(h) + ':' + LeadingZero(m);
    end;

    begin
      assign(thefile,'COMPILED.PAS');
      rewrite(thefile);
      writeln(thefile,
        'compiled : string[32] = ''Compiled on ',DATE,' at ',TIME,''';');
      close(thefile);
    end.

    {
    TPPP was originally going to process source code files that comtained
    tokens like C coders can use. something similar to the following...

      compiled : string[32] = 'Compiled on __DATE__ at __TIME__';

    i've just not had the time to complete any more of the design and coding
    needed... this suits my desires for now...
    {

[Back to MISC SWAG index] [Back to Main SWAG index] [Original]