Структура заголовка файла данных для таблицы dBASE III PLUS.
Заголовок табличного файла |
Байт |
Содержание |
Описание |
0 |
1-й байт |
Определение наличия MEMO-файла в таблице dBASE III PLUS (03h без MEMO-файла (.DBT-файл;) 83h с MEMO-файлом). |
1-3 |
3 байта |
Дата последнего обновления в формате YYMMDD |
4-7 |
32-битное число |
Количество записей в таблице |
8-9 |
16-битное число |
Количество байтов, занимаемых заголовком |
10-11 |
16-битное число |
Количество байтов, занимаемых записью |
12-14 |
3 байта |
Зарезервированная область |
15-27 |
13 байт |
Зарезервировано для сетевой версии dBASE III PLUS |
28-31 |
4 байта |
Зарезервированная область |
32-n |
32 байта |
Массив с описаниями полей (структура каждого такого описания показана ниже) |
n+1 |
1 байт |
Хранится значение 0Dh, выполняющее роль терминатора описаний полей |
n – последний байт массива с описаниями полей. Размер массива зависит от количества полей в табличном файле.
Описание поля таблицы |
Байт |
Содержание |
Описание |
0-10 |
11 байт |
Имя поля в ASCII (заполнено нулями). |
11 |
1 байт |
Тип поля в ASCII (C, D, L, M или N) |
12-15 |
4 байта |
Адрес данных поля (ссылка на память, а не на диск) |
16 |
1 байт |
Размер поля в бинарном формате |
17 |
1 байт |
Порядковый номер поля в бинарном формате |
18-19 |
2 байта |
Зарезервировано для сетевой версии dBASE III PLUS |
20 |
1 байт |
ID рабочей области |
21-22 |
2 байта |
Зарезервировано для сетевой версии dBASE III PLUS |
23 |
1 байт |
Флаг установки поля |
24-31 |
1 байт |
Зарезервированная область |
Записи таблицы
Записи в табличном файле располагаются непосредственно за заголовком таблицы. Данным записи предшествует байт, указывающий на удаленность записи: значение 20h (пробел) указывает что запись не удалена, значение 2Ah (звездочка) – запись была удалена. Поля упаковываются записями без разделителей полей или терминаторов записи. Конец файла помечается единственным байтом (с EOF-маркером), OEM-код которого соответствует значению 26 (1Ah). Вы можете ввести данные в кодовой странице OEM как показано ниже.
Допустимый тип данных таблиц dBASE |
Тип данных |
Возможные значения |
C (Символы) |
Все символы кодовой страницы OEM |
D (Дата) |
Числа и символ-разделитель для месяца, дня и года (внутренний формат записи – 8 цифр в формате YYYYMMDD) |
N (Числовой) |
– . 0 1 2 3 4 5 6 7 8 9 |
L (Логический) |
? Y y N n T t F f (? – не инициализировано) |
M (Мемо) |
Все символы кодовой страницы OEM (внутренний формат записи – 10 цифр, содержащих номер .DBT-блока) |
Бинарные-, MEMO-, OLE-поля и .DBT-файлы
MEMO-поля хранят данные в .DBT-файлах, состоящих из перечисляемых последовательных блоков (0, 1, 2 и т.д.). Размер блока равен 512 байт. Первый блок в .DBT-файле (нулевой блок) – заголовок .DBT-файла.
MEMO-поле каждой записи .DBF-файла содержит номер (значение указывается в кодовой странице OEM), указывающий на блок с хранимыми данными. Если поле не содержит никаких данных, .DBF-файл будет заполнен пробелами (20h) (а не числами).
В случае изменения данных какого-либо поля, блоки могут изменить свои порядковые номера для отображения новой позиции данных в .DBT-файле.
Данная информация взята из руководства по использованию dBASE III Plus ("Using dBASE III PLUS", Appendix C).
Структура заголовка файла данных для таблицы dBASE IV 2.0.
Заголовок табличного файла |
Байт |
Содержание |
Описание |
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 байт |
Флаг, указывающий на наличие незавершенной транзакции dBASE IV |
15 |
1 байт |
Флаг кодировки таблицы dBASE IV |
16-27 |
12 байт |
Зарезервированная область для многопользовательского использования dBASE IV |
28 |
1 байт |
Флаг наличия MDX-файла: 01H - файл для данной таблицы присутствует, 00H - файл отсутствует |
29 |
1 байт |
ID драйвера языка |
30-31 |
2 байта |
Зарезервированная область, заполнена нулями |
32-n |
по 32 байта |
Массив с описаниями полей (структура данного массива показана ниже) |
n+1 |
1 байт |
0DH в качестве терминатора |
n - последний байт массива с описаниями полей. Размер массива зависит от количества полей в табличном файле.
Читать дальше