home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / MKEY.ZIP / MKEYDEMO.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-06-05  |  4.9 KB  |  201 lines

  1. PROGRAM Btrieve_Mulkey;
  2.  
  3. USES Crt, Dos, TPAsciiz, Mkey4;
  4.  
  5.   {$I mkeydemo.typ}
  6.  
  7. VAR
  8.   Address : Address_Rec;
  9.   BtDB, BTDB2 : FILE OF BYTE;
  10.   AddressFile : File_Type;
  11.   FyleName : Asciiz;
  12.   Ch : CHAR;
  13.   AddressPtr : ^Address_Rec;
  14.  
  15.   PROCEDURE Display_Address(Address : Address_Rec);
  16.   BEGIN
  17.     WITH Address DO
  18.       BEGIN
  19.         WRITELN(Status, ' ', Name, ' ', Street);
  20.         WRITELN;
  21.       END;
  22.     {ch := readkey;}
  23.   END;
  24.  
  25. BEGIN
  26.   ClrScr;
  27.   FILLCHAR(AddressFile, SIZEOF(AddressFile), 0);
  28.   FILLCHAR(Address, SIZEOF(Address), 0);
  29.  
  30.   WITH AddressFile DO
  31.     BEGIN
  32.       WITH FileSpec DO
  33.         BEGIN
  34.           Recsize := SIZEOF(Address);
  35.           PageSize := 1024;
  36.           Number_Of_Keys := 2;
  37.         END;
  38.       WITH Key[1] DO
  39.         BEGIN
  40.           Offset := KeyOffset(Address, Address.Name);
  41.           KeyLength := SIZEOF(Address.Name);
  42.           Flags := 259;
  43.           Extension := 'IX1';
  44.           Unique := FALSE;
  45.           Upshift := TRUE;
  46.           KeyType := Key_String;
  47.         END;
  48.       WITH Key[2] DO
  49.         BEGIN
  50.           Offset := KeyOffset(Address, Address.Street) {+ 1} ;
  51.           KeyLength := SIZEOF(Address.Street);
  52.           Flags := 259;
  53.           Extension := 'IX2';
  54.           Unique := FALSE;
  55.           Upshift := TRUE;
  56.           KeyType := Key_String;
  57.         END;
  58.       Name := 'George';
  59.       NumOfFields := 2;
  60.     END;
  61.  
  62.  
  63.   Open_File(AddressFile);
  64.   If AddressFile.IOError then
  65.     begin
  66.       Writeln('Error ');
  67.       Ch := Readkey;
  68.     end;
  69.  
  70.   FILLCHAR(Address, SIZEOF(Address), 0);
  71.   Address.Name := 'James C. Walker';
  72.   Address.Street := '409 South Meeting';
  73.   Add_Record(AddressFile, Address);
  74.   If AddressFile.IOError then
  75.     begin
  76.       Writeln('Error ');
  77.       Ch := Readkey;
  78.     end;
  79.   WRITELN('Adding ...');
  80.   Display_Address(Address);
  81.  
  82.  
  83.   FILLCHAR(Address, SIZEOF(Address), 0);
  84.   Address.Name := 'Jonathan G. F. Walker';
  85.   Address.Street := '509 South Meeting';
  86.   Add_Record(AddressFile, Address);
  87.   If AddressFile.IOError then
  88.     begin
  89.       Writeln('Error ');
  90.       Ch := Readkey;
  91.     end;
  92.   WRITELN('Adding ...');
  93.   Display_Address(Address);
  94.  
  95.   FILLCHAR(Address, SIZEOF(Address), 0);
  96.   Address.Name := 'Rev. James C. Walker, Jr.';
  97.   Address.Street := '609 South Meeting';
  98.   Add_Record(AddressFile, Address);
  99.   If AddressFile.IOError then
  100.     begin
  101.       Writeln('Error ');
  102.       Ch := Readkey;
  103.     end;
  104.   WRITELN('Adding ...');
  105.   Display_Address(Address);
  106.  
  107.   FILLCHAR(Address, SIZEOF(Address), 0);
  108.   Address.Name := 'Mrs. Rose C. Walker, Jr.';
  109.   Address.Street := '709 South Meeting';
  110.   Add_Record(AddressFile, Address);
  111.   If AddressFile.IOError then
  112.     begin
  113.       Writeln('Error ');
  114.       Ch := Readkey;
  115.     end;
  116.   WRITELN('Adding ...');
  117.   Display_Address(Address);
  118.  
  119.   FILLCHAR(Address, SIZEOF(Address), 0);
  120.   Address.Street := '4';
  121.   WRITELN('Searching for ...', Address.Street, ' on Key # 2');
  122.   Read_Record(AddressFile, 2, Address);
  123.   If AddressFile.IOError then
  124.     begin
  125.       Writeln('Error ');
  126.       Ch := Readkey;
  127.     end;
  128.   Display_Address(Address);
  129.  
  130.   FILLCHAR(Address, SIZEOF(Address), 0);
  131.   Address.Name := 'Jo';
  132.   WRITELN('Searching for ...', Address.Name, ' on Key # 1');
  133.   Read_Record(AddressFile, 1, Address);
  134.   If AddressFile.IOError then
  135.     begin
  136.       Writeln('Error ');
  137.       Ch := Readkey;
  138.     end;
  139.   Display_Address(Address);
  140.  
  141.   WRITELN('Searching for next ...', Address.Name, ' on Key # 1');
  142.   Next_Record(AddressFile, 1, Address);
  143.   If AddressFile.IOError then
  144.     begin
  145.       Writeln('Error ');
  146.       Ch := Readkey;
  147.     end;
  148.   Display_Address(Address);
  149.  
  150.   WRITELN('Searching for previous ...', Address.Name, ' on Key # 1');
  151.   Previous_Record(AddressFile, 1, Address);
  152.   If AddressFile.IOError then
  153.     begin
  154.       Writeln('Error ');
  155.       Ch := Readkey;
  156.     end;
  157.   Display_Address(Address);
  158.  
  159.   WRITELN('Updating ...', Address.Name, ' on Key # 1');
  160.   Address.Name := 'Jonathan G. F. Walker, PhD.';
  161.   WRITELN('To ... ', Address.Name);
  162.   Update_Record(AddressFile, Address);
  163.   If AddressFile.IOError then
  164.     begin
  165.       Writeln('Error ');
  166.       Ch := Readkey;
  167.     end;
  168.   Display_Address(Address);
  169.  
  170.   WRITELN('Deleting ...', Address.Name, ' on Key # 1');
  171.   Delete_Record(AddressFile, Address);
  172.   If AddressFile.IOError then
  173.     begin
  174.       Writeln('Error ');
  175.       Ch := Readkey;
  176.     end;
  177.   Display_Address(Address);
  178.  
  179.   WRITELN('Now displaying ALL records ... ');
  180.   FILLCHAR(Address, SIZEOF(Address), 0);
  181.   Read_Record(AddressFile, 1, Address);
  182.   If AddressFile.IOError then
  183.     begin
  184.       Writeln('Error ');
  185.       Ch := Readkey;
  186.     end;
  187.   WHILE NOT AddressFile.IOError DO
  188.     BEGIN
  189.       Display_Address(Address);
  190.       Next_Record(AddressFile, 1, Address);
  191.     END;
  192.  
  193.   Close_File(AddressFile, Address);
  194.   If AddressFile.IOError then
  195.     begin
  196.       Writeln('Error ');
  197.       Ch := Readkey;
  198.     end;
  199.  
  200. END.
  201.