xBase DBMS data file(DBF.rfh):
Class: Database, Status: Complete, Last change: 08.12.2007 8:05:56
descr ('xBase table file.')
descr (NL,
'Info Src: "General Format of .dbf files in Xbase languages" by multisoft Datentechnik GmbH (http://www.fship.com)',NL,
'Info Src: MSDN: Visual FoxPro Documentation/Using Visual FoxPro/Programmer`s Guide/Appendix/Table File Structure',NL)
type
ub num+(1):displ=(INT(@))
TBinDate struc
ub Y
ub M
ub D
ends //Дата в двоичном формате (ГГММДД)
TDBF3FldKind enum Char (
fkChar='C', //all
fkDate = 'D', //all
fkFloat = 'F', //FS, D4, D5, Fp
fkNumeric = 'N', //all
fkLog = 'L', //all
fkMemo = 'M', //all
fkVariable = 'V',//FS
fkPicture = 'P', //Fp binary data in .ftp
fkBinary = 'B', //D5 binary data in .dbt
fkGeneral = 'G', //D5, Fp OLE objects
fkShort = '2', //FS binary int max +/- 32767
fkLong = '4', //FS binary int max +/- 2147483647
fkDouble = '8' //FS binary signed double IEEE
)
TDBF3FldDsc struc
array[11] of Char,0; Name //Имя - ASCIIZ строка
TDBF3FldKind hType
ulong DataP //D3 - fld address in memory, Fp - offset from record begin
Byte Len //all Field length
Byte DecNum //all decimal count
Word MUsrRsrv1 //all Зарезерв. для многопольз. систем
Byte WorkID //D4, D5 Work area ID
Word MUsrRsrv2 //D3, D4, D5 multi-user dBase
Byte SetFldData //D3, D4, D5 used by the command SET FIELDS
array[7] of Byte Reserved
Byte InMDX //D4, D5 Field is in .mdx index
ends
PDataArray ^TDataArray near
/*
* Applies for / supported by:
* FS = FlagShip D3 = dBaseIII+
* Fb = FoxBase D4 = dBaseIV
* Fp = FoxPro D5 = dBaseV
* CL = Clipper
*/
TDBFVer enum byte (
dBase_II=0x02, //FS, D3, D4, D5, Fb, Fp, CL
dBase_III=0x03, //D4, D5 (FS)
Visual_FoxPro=0x30, //D5, Fp (FS)
dBASE_IV_SQL_table=0x43, //FS no memo
dBASE_IV_SQL_system=0x63, // no memo
dBase_III_Memo=0x83, //FS, D3, D4, D5, Fb, Fp, CL dBase III with .dbt Memo
dBASE_IV_memo=0x8B, //D4, D5
dBASE_IV_SQL_table_memo=0xCB, //with .dbt memo in D4 format
FoxPro_2_memo=0xF5, //FP with with .fmp memo
FoxBASE=0xFB
)
TIndexFlags set 8 of (
hasCdx ^ 0x01, //Fp, D4, D5 file has a structural .cdx
hasMemo ^ 0x02, //Fp file has a Memo field
isDatabase ^ 0x04 //Fp file is a database (.dbc)
)
TCodePageFp enum byte (
cp437 = 0x01, //codepage 437 DOS USA Fp
cp850 = 0x02, //codepage 850 DOS Multi ling Fp
cp1252= 0x03, //codepage 1252 Windows ANSI Fp
cp10000= 0x04, //codepage 10000 Standard Macintosh Fp
cp620 = 0x69, //codepage 620 * Mazovia (Polish) MS-DOS Fp
cp737 = 0x6A, //codepage 737 * Greek MS-DOS (437G) Fp
cp852 = 0x64, //codepage 852 Eastern European MS-DOS Fp
cp861 = 0x67, //codepage 861 Icelandic MS-DOS Fp
cp865 = 0x66, //codepage 865 Nordic MS-DOS Fp
cp866 = 0x65, //codepage 866 Russian MS-DOS Fp
cp895 = 0x68, //codepage 895 * Kamenicky (Czech) MS-DOS Fp
cp857 = 0x6B, //codepage 857 Turkish MS-DOS Fp
cp1250= 0xC8, //codepage 1250 Eastern European Windows Fp
cp1251= 0xC9, //codepage 1251 Russian Windows Fp
cp1253= 0xCB, //codepage 1253 Greek Windows Fp
cp1254= 0xCA, //codepage 1254 Turkish Windows Fp
cp10006= 0x98, //codepage 10006 Greek Macintosh Fp
cp10007= 0x96, //codepage 10007 * Russian Macintosh Fp
cp10029= 0x97, //codepage 10029 Macintosh EE Fp
ignored=0x00 //ignored FS, D3, Fb, Fp, CL
)
TDBF3Hdr struc
TDBFVer Ver
TBinDate LastChangeDate //all
ulong RecCnt //all Number of records in file
PDataArray HdrLen //all Header size in bytes
Word RecLen //all Record size in bytes
//(array[20]of Byte) Reserved
Word Reserved //all
Byte InTransaction //D4, D5, else 0 => ignored
Byte IsEncrypted //D4, D5, else 0 => normal visible
array[12]of Byte MultiUser //D4, D5 multi-user environment use
TIndexFlags NDXFlags //Fp, D4, D5
TCodePageFp CodePg //Fp - Code page mark; D4, D5 - language driver ID; else - ignored
word Res1 //Reserved
ends
TDBF3HdrWithFields struc
TDBF3Hdr H
//array[(@.H.HdrLen-@.H:Size-1) div 32] of TDBF3FldDsc Fields
array of TDBF3FldDsc ?@.Name[0]=0x0D!byte; Fields
ends
data
0x0000 TDBF3HdrWithFields Hdr
type
% TRecData array[Hdr.H.RecLen] of Char
/*
TRecData struc
Char F
(array of(array[Hdr.Fields[#].Len]of Char,<' ';)) D
ends:[D:Size=Hdr.H.RecLen-1]
*/
TFieldData array[Hdr.Fields[#].Len]of Char
/*
TFieldsData array of TFieldData
TRecData struc
Char F
TFieldsData D
ends :[D:Size=Hdr.H.RecLen-1]
*/
TFieldsData array of TFieldData :[@:Size=Hdr.H.RecLen-1]
TRecData struc
Char F
TFieldsData D
ends
TDataArray array[Hdr.H.RecCnt] of TRecData
Other specifications.
FlexT home page,
Author`s home page.