MEMO-поле каждой записи .DBF-файла содержит номер (значение указывается в кодовой странице OEM), указывающий на блок с хранимыми данными. Если поле не содержит никаких данных, .DBF-файл будет заполнен пробелами (20h) (а не числами).
В случае изменения данных какого-либо поля, блоки могут изменить свои порядковые номера для отображения новой позиции данных в .DBT-файле.
Данная информация взята из справочника по dBASE IV ("dBASE IV Language Reference", Appendix D).
| Заголовок табличного файла | ||
|---|---|---|
| Байт | Содержание | Описание |
| 0 | 1-й байт | Контроль файла dBASE под Windows: биты 0-2 указывают номер версии, бит 3 - наличие MEMO-файла dBASE IV или dBASE под Windows, биты 4-6 - наличие dBASE IV SQL-таблицы, бит 7 - наличие любого .DBT MEMO-файла (MEMO-файл таблицы dBASE III Plus, dBASE IV или dBASE под Windows) |
| 1-3 | 3 байта | Дата последнего обновления в формате YYMMDD |
| 4-7 | 32-битное число | Количество записей в таблице |
| 8-9 | 16-битное число | Количество байтов, занимаемых заголовком |
| 10-11 | 16-битное число | Количество байтов, занимаемых записью |
| 12-13 | 2 байта | Зарезервированная область, заполнена нулями |
| 14 | 1 байт | Флаг, указывающий на наличие незавершенной транзакции |
| 15 | 1 байт | Флаг кодировки |
| 16-27 | 12 байт | Зарезервированная область для многопользовательского использования |
| 28 | 1 байт | Флаг наличия MDX-файла: 01H - файл для данной таблицы присутствует, 00H - файл отсутствует |
| 29 | 1 байт | ID драйвера языка |
| 30-31 | 2 байта | Зарезервированная область, заполнена нулями |
| 32-n | по 32 байта | Массив с описаниями полей (структура данного массива показана ниже) |
| n+1 | 1 байт | 0DH в качестве терминатора |
n - последний байт массива с описаниями полей. Размер массива зависит от количества полей в табличном файле.
| Описание поля таблицы | ||
|---|---|---|
| Байт | Содержание | Описание |
| 0-10 | 11 байт | Имя поля в ASCII (заполнено нулями). |
| 11 | 1 байт | Тип поля в ASCII (B, C, D, F, G, L, M или N) |
| 12-15 | 4 байта | Зарезервированная область |
| 16 | 1 байт | Размер поля в бинарном формате |
| 17 | 1 байт | Порядковый номер поля в бинарном формате |
| 18-19 | 2 байта | Зарезервированная область |
| 20 | 1 байт | ID рабочей области |
| 21-30 | 10 байт | Зарезервированная область |
| 31 | 1 | байт Флаг MDX-поля: 01H если поле имеет метку индекса в MDX-файле, 00H – нет. |
Записи в табличном файле располагаются непосредственно за заголовком таблицы. Данным записи предшествует байт, указывающий на удаленность записи: значение 20h (пробел) указывает что запись не удалена, значение 2Ah (звездочка) – запись была удалена. Поля упаковываются записями без разделителей полей или терминаторов записи. Конец файла помечается единственным байтом (с EOF-маркером), OEM-код которого соответствует значению 26 (1Ah). Вы можете ввести данные в кодовой странице OEM как показано ниже.