home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / ECO30603.ZIP / ECO30603.LZH / ECOLIBII / DEMOS / DEMO_REG.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-03-08  |  3.8 KB  |  114 lines

  1. { all ECO Library II functions are available in source }
  2. uses
  3.   eco_lib,
  4.            { longint <--> date conversion }
  5.            { __num, __longint2date }
  6.   eco_reg
  7.  
  8.   ;
  9.  
  10.  
  11.  
  12.  
  13.  
  14.   function __cvttoken(s: string; w: word): string;
  15.   var
  16.     i  :   byte;
  17.     st : string;
  18.  
  19.   begin
  20.     i := pos('N', keytypes[validuser.typeofkey]);
  21.     delete(s, i, 1); st := __num(w); insert(st, s, i);
  22.     __cvttoken := s;
  23.   end;
  24.  
  25.  
  26.  
  27. var i : byte;
  28.  
  29.  
  30.  
  31. begin
  32.   with validuser do begin
  33.     keyfilename  := 'e.key';
  34.     programmer   := 'UltiHouse Software';
  35.     programkey   := 'e';
  36.     upgradecode  := 'Rel2.1';
  37.     registered   := 'Floor A.C. Naaijkens';
  38.     typeofkey    := keyexpiration;
  39.     {
  40.       keypermanent, key30day, key30runs, keynday, keynruns,
  41.       keyexpiration, keyreserved1, keyreserved2
  42.     }
  43.     expireamount := 25;
  44.     creation     := __curdate2longint;
  45.     expiredate   := __date2longint('20 Sep 92  12:00.00');
  46.   end;
  47.  
  48.   if (paramstr(1) = '/r') then begin
  49.     writeln('Enter your name:');
  50.     readln(validuser.registered);
  51.     writeln('Enter the level:');
  52.     readln(validuser.keylevel);
  53.     writeln('Enter the registration key:');
  54.     readln(validuser.keycreator);
  55.     validuser.keycreator := __up(validuser.keycreator);
  56.     if checkcreator(validuser) then with validuser do begin
  57.       writeln('KEY CREATED'); typeofkey := keypermanent;
  58.       expiredate   := __date2longint('31 Dec 99  00:00.00');
  59.       createkey(validuser);
  60.     end else keyerror := keyerror + [errorbadcrc];
  61.   end else if checkkey(validuser) then writeln(
  62.     'Totally registered version'
  63.   ) else writeln('Restrictions ARE imposed.');
  64.  
  65.   if errornokey        in keyerror then writeln(keyerrors[errornokey       ]);
  66.   if errorkeycopyright in keyerror then writeln(keyerrors[errorkeycopyright]);
  67.   if errorkeyposession in keyerror then writeln(keyerrors[errorkeyposession]);
  68.   if errorkeydate      in keyerror then writeln(keyerrors[errorkeydate     ]);
  69.   if errorkeyunknown   in keyerror then writeln(keyerrors[errorkeyunknown  ]);
  70.   if errorinternal     in keyerror then writeln(keyerrors[errorinternal    ]);
  71.   if errorprogrammer   in keyerror then writeln(keyerrors[errorprogrammer  ]);
  72.   if errorversion      in keyerror then writeln(keyerrors[errorversion     ]);
  73.   if errorbadcrc       in keyerror then writeln(keyerrors[errorbadcrc      ]);
  74.  
  75.   with validuser do begin
  76.     if typeofkey in [keynday, keynruns] then begin
  77.       writeln('"',__cvttoken(keytypes[typeofkey], expireamount),'"');
  78.     end else if validuser.typeofkey = keyexpiration then begin
  79.       writeln('Key expires : ', __longint2date(expiredate), ' (in ',
  80.         __diff(creation, expiredate), ' days).'
  81.       );
  82.     end else writeln('Type        : "', keytypes[typeofkey], '"');
  83.  
  84.     writeln('Creation    : ', __longint2date(creation)   );
  85.     writeln('Registered  : ', registered  );
  86.     writeln('Keyfilename : ', keyfilename );
  87.     writeln('Programkey  : ', programkey  );
  88.     writeln('Programmer  : ', programmer  );
  89.     writeln('Upgradecode : ', upgradecode );
  90.     writeln('Keylevel    : ', keylevel    );
  91.     writeln('Invokes     : ', invokes     );
  92.     writeln('Amount      : ', expireamount);
  93.   end;
  94.  
  95.   {
  96.     the difference between nday and expiration is, that expiratinkeys have
  97.     "hardcoded" day expiration, whilst nday, start counting on the day they're
  98.     first used. how this is handy, i still don't know, (security) but i feel
  99.     this might turn out to be implementable very soon now...
  100.   }
  101.  
  102.   { show use of __diff (clumsy way this time, but you have creation et all.) }
  103.   (*
  104.   writeln(
  105.     __diff(
  106.       __date2longint('20 Aug'),
  107.       __date2longint('20 Sep')
  108.     )
  109.   );  { This is enough to work, but specifying dd MMM yy hh:mm.ss won't hurt }
  110.   *)
  111.  
  112.  { YOU NOW HAVE ALL INFO, DO WITH IT, YOU, THE PROGRAMMER, THINK IS NESSECARY }
  113. end.
  114.