home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / PASCAL / RKPLUS33 / RKPDEMO3 / SAMPLE2.PAS < prev    next >
Pascal/Delphi Source File  |  1993-10-19  |  6KB  |  241 lines

  1. Program Sample2;
  2.  
  3. {
  4.  This is a demonstration program using RkPlus.
  5.  It uses 2 registration levels (0 and 1).
  6.  If a Level 1 key has expired, it will be treated as Level 0.
  7.  If a Level 0 key has expired, it will be treated as Unregistered.
  8.  This is a very simple program that doesn't actually do anything, but it
  9.  should demonstrate some of what can be done with RkPlus.
  10.  
  11.  It is identical to Sample1, except that it also contains a built-in
  12.  registration routine, instead of using an external registration program
  13.  (such as Register).  It uses the same keys as Sample1, which can be created
  14.  with the GenKey programme.
  15.  
  16.  Sample2 uses the Rkp3Enc unit to cause RkPlus to use the new version 3.x
  17.  keys.
  18. }
  19.  
  20.  
  21. Uses
  22.   Crt,
  23.   RkPlus,
  24.   Rkp3Enc;
  25.  
  26.  
  27. Const
  28.   MonthNames : Array[1..12] of String[3]
  29.   = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
  30.  
  31.  
  32. Var
  33.   kc  : Char;
  34.   lcv : Byte;
  35.   Owner : Array[0..16] of Char;
  36.   Prog  : Array[0..5] of Char;
  37.   Ver   : Real;
  38.  
  39.  
  40. Procedure BadRegBeep;
  41.  
  42. Begin
  43.   Sound(1200);
  44.   Delay(200);
  45.   Sound(600);
  46.   Delay(200);
  47.   Sound(1200);
  48.   Delay(200);
  49.   Sound(600);
  50.   Delay(200);
  51.   NoSound;
  52. End;
  53.  
  54.  
  55. Procedure NotRegBeep;
  56.  
  57. Begin
  58.   Sound(600);
  59.   Delay(200);
  60.   Sound(1200);
  61.   Delay(200);
  62.   NoSound;
  63. End;
  64.  
  65.  
  66. Procedure DoView;
  67.  
  68. Begin
  69.   WriteLn('Sample data :');
  70.   WriteLn;
  71.   WriteLn('4.465536  7.918270  0.118373  5.367233');
  72.   WriteLn('1.396349  4.868343  7.079323  4.783021');
  73.   WriteLn('3.947924  8.864673  8.846264  2.999999');
  74.   WriteLn('8.490832  6.874378  5.338329  3.729270');
  75.   WriteLn('6.839882  8.873478  6.750373  7.018948');
  76.   WriteLn('5.034784  3.003763  3.253290  4.892387');
  77.   WriteLn('3.874378  8.314159  9.880869  3.987842');
  78.   WriteLn('2.764947  9.265358  4.013002  9.903278');
  79. End;
  80.  
  81.  
  82. Procedure DoCalc;
  83.  
  84. Begin
  85.   If Rkp.Registered then Begin
  86.     Write('The calculated result is ');
  87.     WriteLn(4.465536+7.918270+0.118373+5.367233+1.396349+4.868343+7.079323+4.783021
  88.     +3.947924+8.864673+8.846264+2.999999+8.490832+6.874378+5.338329+3.729270
  89.     +6.839882+8.873478+6.750373+7.018948+5.034784+3.003763+3.253290+4.892387
  90.     +3.874378+8.314159+9.880869+3.987842+2.764947+9.265358+4.013002+9.903278);
  91.   End Else
  92.     WriteLn('Only available in registered version!');
  93. End;
  94.  
  95.  
  96. Procedure DoTest;
  97.  
  98. Begin
  99.   If Rkp.Registered then Begin
  100.     If (Rkp.Level > 0) then Begin
  101.       Write('Performing tests...');
  102.       Delay(300);
  103.       WriteLn;
  104.       WriteLn('All tests passed.');
  105.     End Else
  106.       WriteLn('Not available in demo version!');
  107.   End Else
  108.     WriteLn('Only available in registered version!');
  109. End;
  110.  
  111.  
  112. Procedure DoRegister;
  113.  
  114. Begin
  115.   Write('Enter name of person to register : ');
  116.   ReadLn(Rkp.Name1);
  117.   WriteLn;
  118.   Write('Enter the registration key : ');
  119.   ReadLn(Rkp.Key);
  120.   WriteLn;
  121.   Rkp.ID := '(c) Serious Cybernetics';
  122.   Rkp.Message := 'Sample2';
  123.   Rkp.Name2 := '';
  124.   Rkp.Name3 := '';
  125.   Rkp.Level := 0;
  126.   VerifyKey;
  127.   If Not Rkp.Registered then Begin
  128.     Rkp.Level := 1;
  129.     VerifyKey;
  130.   End;
  131.   If Not Rkp.Registered then
  132.     WriteLn('Invalid key!')
  133.   Else Begin
  134.     SaveRegInfo;
  135.     If RkpOK then
  136.       WriteLn(KeyFileName,' created.')
  137.     Else
  138.       WriteLn('Error ',RkpError,' creating file.');
  139.   End;
  140. End;
  141.  
  142.  
  143. Begin
  144.   If BadSystemDate then Begin
  145.     WriteLn('You must correctly set your system clock to run Sample2!');
  146.     BadRegBeep;
  147.     Halt(1);
  148.   End;
  149.   Owner := 'ArgleBarbWotsLeeb';
  150.   Prog := 'Sample';
  151.   Ver := 1.0;
  152.   SetOwnerCode(Owner,SizeOf(Owner));
  153.   SetProgCode(Prog,SizeOf(Prog));
  154.   SetVerCode(Ver,SizeOf(Ver));
  155.   SetKeyFile('Sample');
  156.   GetRegInfo;
  157.   Write('Sample2');
  158.   If Not RkpOK then
  159.     WriteLn(' [invalid]')
  160.   Else If Rkp.Registered and (Rkp.Level > 0) then
  161.     WriteLn(' [registered]')
  162.   Else If Rkp.Registered then
  163.     WriteLn(' [demo]')
  164.   Else
  165.     WriteLn(' [unregistered]');
  166.   WriteLn('Sample of RkPlus method 3 (using version 3.x/compatible keys)');
  167.   WriteLn('See RKPLUS.DOC for more info');
  168.   WriteLn;
  169.   If (RkpError = InvalidFile) or (RkpError = InvalidKey) then Begin
  170.     WriteLn(KeyFileName,' has been altered!');
  171.     BadRegBeep;
  172.     Halt(1);
  173.   End Else If (RkpError = ExpiredKey) then Begin
  174.     If (Rkp.Level > 0) then Begin
  175.       WriteLn('Your registration key has expired!');
  176.       WriteLn('You will be given access at the DEMO level.');
  177.       NotRegBeep;
  178.       Rkp.Level := 0;
  179.     End Else Begin
  180.       WriteLn('Your demo key has expired!');
  181.       WriteLn('You will be given access at the UNREGISTERED level.');
  182.       NotRegBeep;
  183.       Rkp.Registered := False;
  184.     End;
  185.   End Else If Rkp.Registered then Begin
  186.     If (Rkp.Level > 0) then Begin
  187.       WriteLn('This version of Sample2 is registered to ',Rkp.Name1);
  188.       If (Rkp.ExpYear <> 0) and (Rkp.ExpMonth <> 0) then
  189.         WriteLn('This registration will expire ','1-',MonthNames[Rkp.ExpMonth],'-',Rkp.ExpYear,'.');
  190.       WriteLn('Thank you for registering!');
  191.     End Else Begin
  192.       WriteLn('This version of Sample2 is a limited use demo for ',Rkp.Name1);
  193.       If (Rkp.ExpYear <> 0) and (Rkp.ExpMonth <> 0) then
  194.         WriteLn('This demo will expire ','1-',MonthNames[Rkp.ExpMonth],'-',Rkp.ExpYear,'.');
  195.       WriteLn('Don''t forget to register!');
  196.     End;
  197.   End Else If Not RkpOK then Begin
  198.     WriteLn('Unexpected error ',RkpError,'!');
  199.     Halt(255);
  200.   End Else Begin
  201.     WriteLn('This version of Sample2 is unregistered.');
  202.     WriteLn('Contact TrendSoft, Inc. to register or obtain a limited use Sample key.');
  203.     NotRegBeep;
  204.     Delay(500);
  205.   End;
  206.   WriteLn;
  207.   WriteLn('Sample2 Menu');
  208.   WriteLn;
  209.   WriteLn('[V]iew sample data');
  210.   Write('[C]alculate');
  211.   If Not Rkp.Registered then
  212.     WriteLn('  (only available in registered version)')
  213.   Else
  214.     WriteLn;
  215.   Write('[T]est results');
  216.   If Not Rkp.Registered then
  217.     WriteLn('  (only available in registered version)')
  218.   Else If (Rkp.Level <= 0) then
  219.     WriteLn('  (not available in demo version)')
  220.   Else
  221.     WriteLn;
  222.   WriteLn('[R]egister');
  223.   WriteLn;
  224.   Write('Selection : ');
  225.   kc := UpCase(ReadKey);
  226.   WriteLn;
  227.   WriteLn;
  228.   Case kc of
  229.   'V' :
  230.     DoView;
  231.   'C' :
  232.     DoCalc;
  233.   'T' :
  234.     DoTest;
  235.   'R' :
  236.     DoRegister;
  237.   Else
  238.     WriteLn('Invalid selection!');
  239.   End;
  240. End.
  241.