Code : Tout sélectionner
;{ = Structure de fichier PARADOX
; Header 2048 bytes
; $0000 - $0057 = ALL PARADOX -> fixed field locations
; $0058 - $0077 = PARADOX 4+ -> Data File Header ( only for .DB data and .Xnn index files )
; Data bloc 0
; Data bloc 1
; Data bloc 2
; ...
; Data bloc n
; This hi-byte to lo-byte arrangement only applies to the user data in the table
;} Evething uses the normal low-byte to hi-byte format
;{ début du fichier : IZCODP03.DB = $0000 - $0057
; 0 1 2 3 4 5 6 7 8 9 A B C D E F
; 0000 6B,00,00,08,00,02,21,00, 00,00,03,00,03,00,01,00,
; 0010 02,00,AD,00,00,00,5C,7F, EF,6B,EC,E7,EF,6B,00,00,
; 0020 00,06,00,01,00,00,FF,00, FF,B7,00,00,00,9A,76,00,
; 0030 6E,88,EF,6B,62,88,EF,6B, 00,0C,03,00,00,00,1F,0F,
; 0040 00,00,00,00,00,00,00,00, 00,00,00,00,00,00,00,00,
; 0050 00,E5,01,00,00,00,20,00
;}
;{ 0000 - 6B,00 = integer recordSize
;
; This is the size of a user record in this table.
;
; For primary index files, each "record" is actually the
; field Or fields in the index, plus three integers which
; are Not referenced in the header.
;
; Secondary index files also have additional fields, but
;} these are listed in the header.
;{ 0002 - 00,08 = integer headerSize (always $0800)
;
; You can change headerSize, And move the Data blocks
; accordingly, To create larger Or smaller table headers.
; Borland's TUTILITY program would flag an error, but
; Paradox, the Borland Database Engine And the Paradox
;} Engine will all still work With these tables.
;{ 0004 - 00 = byte fileType
;
; 0 = this is an indexed .DB Data file
; 1 = this is a primary index .PX file
; 2 = this is a non-indexed .DB Data file
; 3 = this is a non-incrementing secondary index .Xnn file
; 4 = this is a secondary index .Ynn file (inc Or non-inc)
; 5 = this is an incrementing secondary index .Xnn file
; 6 = this is a non-incrementing secondary index .XGn file
; 7 = this is a secondary index .YGn file (inc Or non inc)
;} 8 = this is an incrementing secondary index .XGn file
;{ 0005 - 02 = byte maxTableSize
;
; This is the "maximum table size" determined when this
; table was created. It really indicates the size of each
; block of records in the Data section of the table.
;
; 1 = 64M (block size = $0400 bytes)
; 2 = 128M (block size = $0800 bytes)
; 3 = 192M (block size = $0C00 bytes)
;} 4 = 256M (block size = $1000 bytes)
;{ 0006 - 21,00,00,00 = longint numRecords
;} This is the number of records in this file.
;{ 000A - 03,00 = word nextBlock
;
; I'm not certain what this really is, but it seems to be
; the same As fileBlocks unless there is an empty block in
;} the table.
;{ 000C - 03,00 = word fileBlocks
;
; This is the number of Data blocks in the file.
;} (Each "block" is a cluster of records.)
;{ 000E - 01,00 = word firstBlock
;
;} Always 1 unless the table is empty.
;{ 0010 - 02,00 = word lastBlock
;
etc etc