home *** CD-ROM | disk | FTP | other *** search
- PROGRAM Btrieve_Mulkey;
-
- USES Crt, Dos, TPAsciiz, Mkey4;
-
- {$I mkeydemo.typ}
-
- VAR
- Address : Address_Rec;
- BtDB, BTDB2 : FILE OF BYTE;
- AddressFile : File_Type;
- FyleName : Asciiz;
- Ch : CHAR;
- AddressPtr : ^Address_Rec;
-
- PROCEDURE Display_Address(Address : Address_Rec);
- BEGIN
- WITH Address DO
- BEGIN
- WRITELN(Status, ' ', Name, ' ', Street);
- WRITELN;
- END;
- {ch := readkey;}
- END;
-
- BEGIN
- ClrScr;
- FILLCHAR(AddressFile, SIZEOF(AddressFile), 0);
- FILLCHAR(Address, SIZEOF(Address), 0);
-
- WITH AddressFile DO
- BEGIN
- WITH FileSpec DO
- BEGIN
- Recsize := SIZEOF(Address);
- PageSize := 1024;
- Number_Of_Keys := 2;
- END;
- WITH Key[1] DO
- BEGIN
- Offset := KeyOffset(Address, Address.Name);
- KeyLength := SIZEOF(Address.Name);
- Flags := 259;
- Extension := 'IX1';
- Unique := FALSE;
- Upshift := TRUE;
- KeyType := Key_String;
- END;
- WITH Key[2] DO
- BEGIN
- Offset := KeyOffset(Address, Address.Street) {+ 1} ;
- KeyLength := SIZEOF(Address.Street);
- Flags := 259;
- Extension := 'IX2';
- Unique := FALSE;
- Upshift := TRUE;
- KeyType := Key_String;
- END;
- Name := 'George';
- NumOfFields := 2;
- END;
-
-
- Open_File(AddressFile);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
-
- FILLCHAR(Address, SIZEOF(Address), 0);
- Address.Name := 'James C. Walker';
- Address.Street := '409 South Meeting';
- Add_Record(AddressFile, Address);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
- WRITELN('Adding ...');
- Display_Address(Address);
-
-
- FILLCHAR(Address, SIZEOF(Address), 0);
- Address.Name := 'Jonathan G. F. Walker';
- Address.Street := '509 South Meeting';
- Add_Record(AddressFile, Address);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
- WRITELN('Adding ...');
- Display_Address(Address);
-
- FILLCHAR(Address, SIZEOF(Address), 0);
- Address.Name := 'Rev. James C. Walker, Jr.';
- Address.Street := '609 South Meeting';
- Add_Record(AddressFile, Address);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
- WRITELN('Adding ...');
- Display_Address(Address);
-
- FILLCHAR(Address, SIZEOF(Address), 0);
- Address.Name := 'Mrs. Rose C. Walker, Jr.';
- Address.Street := '709 South Meeting';
- Add_Record(AddressFile, Address);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
- WRITELN('Adding ...');
- Display_Address(Address);
-
- FILLCHAR(Address, SIZEOF(Address), 0);
- Address.Street := '4';
- WRITELN('Searching for ...', Address.Street, ' on Key # 2');
- Read_Record(AddressFile, 2, Address);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
- Display_Address(Address);
-
- FILLCHAR(Address, SIZEOF(Address), 0);
- Address.Name := 'Jo';
- WRITELN('Searching for ...', Address.Name, ' on Key # 1');
- Read_Record(AddressFile, 1, Address);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
- Display_Address(Address);
-
- WRITELN('Searching for next ...', Address.Name, ' on Key # 1');
- Next_Record(AddressFile, 1, Address);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
- Display_Address(Address);
-
- WRITELN('Searching for previous ...', Address.Name, ' on Key # 1');
- Previous_Record(AddressFile, 1, Address);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
- Display_Address(Address);
-
- WRITELN('Updating ...', Address.Name, ' on Key # 1');
- Address.Name := 'Jonathan G. F. Walker, PhD.';
- WRITELN('To ... ', Address.Name);
- Update_Record(AddressFile, Address);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
- Display_Address(Address);
-
- WRITELN('Deleting ...', Address.Name, ' on Key # 1');
- Delete_Record(AddressFile, Address);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
- Display_Address(Address);
-
- WRITELN('Now displaying ALL records ... ');
- FILLCHAR(Address, SIZEOF(Address), 0);
- Read_Record(AddressFile, 1, Address);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
- WHILE NOT AddressFile.IOError DO
- BEGIN
- Display_Address(Address);
- Next_Record(AddressFile, 1, Address);
- END;
-
- Close_File(AddressFile, Address);
- If AddressFile.IOError then
- begin
- Writeln('Error ');
- Ch := Readkey;
- end;
-
- END.