home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / w3_prog / db3tpwdl.arj / DB3DLUN.PAS < prev    next >
Pascal/Delphi Source File  |  1991-09-12  |  3KB  |  89 lines

  1. {This unit must be USEd by programs that call procedures in the
  2.  db3dll DLL. It contains the declarations and types }
  3. UNIT db3DlUn;
  4.  
  5. INTERFACE
  6.  
  7. CONST
  8.   MAX_HEADER = 4129;          { = maximum length of dBASE III header }
  9.   MAX_BYTES_IN_RECORD = 4000; { dBASE III record limit }
  10.   MAX_FIELDS_IN_RECORD = 128; { dBASE III field limit  }
  11.   BYTES_IN_MEMO_RECORD = 512; { dBASE III memo field record size }
  12.   { Valid field types }
  13.   ValidTypes : SET OF Char = ['C', 'N', 'L', 'M', 'D'];
  14.  
  15.   { Special Error codes for .DBF files }
  16.   NOT_DB_FILE = $80;  { first byte was not a $3 or $83 or a $2 (dBASE II)}
  17.   INVALID_FIELD = $81;{ invalid field type was found }
  18.   REC_TOO_HIGH = $82; { tried to read a record beyond the correct range }
  19.   PARTIAL_READ = $83; { only a partial record was read }
  20.  
  21. TYPE
  22.   _Str64 = STRING[64];
  23.   _HeaderType = ARRAY[0..MAX_HEADER] OF Byte;
  24.   _FieldDescType = ARRAY[0..31] OF Byte;
  25.   _dRec = ^_DataRecord;
  26.   _DataRecord = ARRAY[0..MAX_BYTES_IN_RECORD] OF Byte;
  27.   _HeaderPrologType = ARRAY[0..31] OF Byte;
  28.   _dbfFile = FILE;
  29.   _FieldRecord = RECORD
  30.     Name : String[10];
  31.     Typ : Char;
  32.     Len : Byte;
  33.     Dec : Byte;
  34.     Off : Integer;
  35.     END;
  36.  
  37.   _FieldArray = ARRAY[1..MAX_FIELDS_IN_RECORD] OF _FieldRecord;
  38.   _dFields = ^_FieldArray;
  39.   _MemoRecord = ARRAY[1..BYTES_IN_MEMO_RECORD] OF Byte;
  40.   _MemoFile = FILE OF _MemoRecord;
  41.   _StatusType = (NotOpen, NotUpdated, Updated);
  42.  
  43.   dbfRecord = RECORD
  44.     FileName : String[64];
  45.     dFile : _dbfFile;
  46.     HeadProlog : _HeaderPrologType;
  47.     dStatus : _StatusType;
  48.     WithMemo : Boolean;
  49.     DateOfUpdate : String[8];
  50.     NumRecs : Longint;
  51.     HeadLen : Integer;
  52.     RecLen : Integer;
  53.     NumFields : Integer;
  54.     Fields : _dFields;
  55.     CurRecord : _dRec;
  56.     END;
  57.  
  58. PROCEDURE GetDbfRecord(VAR D : dbfRecord; RecNum : Longint; VAR dbfError: Integer);
  59.           {Gets one record to buffer}
  60. PROCEDURE PutDbfRecord(VAR D : dbfRecord; RecNum : Longint; VAR dbfError: Integer);
  61.           {Puts one record in file}
  62. PROCEDURE AppendDbf(VAR D : dbfRecord; VAR dbfError: Integer);
  63.           {Appends one record to end of file}
  64. PROCEDURE CloseDbf(VAR D : dbfRecord; VAR dbfError: Integer);
  65.           {Closes a database}
  66. PROCEDURE OpenDbf(VAR D : dbfRecord; VAR dbfError: Integer);
  67.           {Opens a databse}
  68. PROCEDURE CreateDbf(VAR D: dbfRecord; filename: _Str64; numfields: Integer;
  69.                     fldarrayptr : _dFields; VAR dbfError: Integer);
  70.     {
  71.     Call CreateDbf with the full pathname of the file that you want
  72.     to create (filename), the number of fields in a record (numfields),
  73.     and a pointer to an array of _FieldRecord (fldarrayptr).  The procedure
  74.     will initialize all the data structures in the dbfRecord (D).
  75.     dbfError must be an integer variable declared in the calling
  76.     unit. On return it will hold any error code.
  77.     }
  78.  
  79. IMPLEMENTATION
  80.  
  81. PROCEDURE GetDbfRecord;  external 'DB3DLL' index 1;
  82. PROCEDURE PutDbfRecord;  external 'DB3DLL' index 2;
  83. PROCEDURE AppendDbf;     external 'DB3DLL' index 3;
  84. PROCEDURE CloseDbf;      external 'DB3DLL' index 4;
  85. PROCEDURE OpenDbf;       external 'DB3DLL' index 5;
  86. PROCEDURE CreateDbf;     external 'DB3DLL' index 6;
  87.  
  88. end.
  89.