Таблицы dBASE: Структура .DBF-файла
Таблицы dBASE: Структура .DBF-файла
Иногда возникает необходимость поработать с таблицей dBASE напрямую, без Borland Database Engine (BDE). К примеру, если .DBT-файл (содержащий MEMO-данные) для данной таблицы безвозвратно потерян, .DBF-файл становится абсолютно непригодным, поскольку байт в заголовке .DBF-файла указывает, что таблица должна содержать соответствующий MEMO-файл. Решение этой проблемы потребует обнуление этого байта, для того чтобы таблица не указывала на сопутствующий MEMO-файл. Или, если Вам захотелось написать собственную программу для работы с данными.
Ниже приводяся структуры .DBF-файлов для таблиц dBASE. Представлены структуры файлов для различных версий dBASE: dBASE III PLUS 1.1, dBASE IV 2.0, dBASE 5.0 под DOS и dBASE 5.0 для Windows.
Структура заголовка файла данных для таблицы 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 как показано ниже.
Бинарные-, 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 - последний байт массива с описаниями полей. Размер массива зависит от количества полей в табличном файле.
Описание поля таблицы Байт Содержание Описание 0-10 11 байт Имя поля в ASCII (заполнено нулями). 11 1 байт Тип поля в ASCII (C, D, F, 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).
Допустимый тип данных таблиц dBASE Тип данных Возможные значения C (Символы) Все символы кодовой страницы OEM D (Дата) Числа и символ-разделитель для месяца, дня и года (внутренний формат записи – 8 цифр в формате YYYYMMDD) F (Бинарные числа с плавающей точкой) – . 0 1 2 3 4 5 6 7 8 9 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-поля и .DBT-файлы
MEMO-поля хранят данные в .DBT-файлах, состоящих из перечисляемых последовательных блоков (0, 1, 2 и т.д.). Переменная BLOCKSIZE определяет размер каждого блока. Первый блок в .DBT-файле (нулевой блок) – заголовок .DBT-файла.
MEMO-поле каждой записи .DBF-файла содержит номер (значение указывается в кодовой странице OEM), указывающий на блок с хранимыми данными. Если поле не содержит никаких данных, .DBF-файл будет заполнен пробелами (20h) (а не числами).
В случае изменения данных какого-либо поля, блоки могут изменить свои порядковые номера для отображения новой позиции данных в .DBT-файле.
Данная информация взята из справочника по dBASE IV ("dBASE IV Language Reference", Appendix D).
Структура заголовка файла данных для таблицы dBASE 5.0 под DOS.
Заголовок табличного файла Байт Содержание Описание 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 как показано ниже.
MEMO-поля и .DBT-файлы
MEMO-поля хранят данные в .DBT-файлах, состоящих из перечисляемых последовательных блоков (0, 1, 2 и т.д.). Переменная BLOCKSIZE определяет размер каждого блока. Первый блок в .DBT-файле (нулевой блок) – заголовок .DBT-файла.
MEMO-поле каждой записи .DBF-файла содержит номер (значение указывается в кодовой странице OEM), указывающий на блок с хранимыми данными. Если поле не содержит никаких данных, .DBF-файл будет заполнен пробелами (20h) (а не числами).
В случае изменения данных какого-либо поля, блоки могут изменить свои порядковые номера для отображения новой позиции данных в .DBT-файле.
Если вы удаляете текст в МЕМO-поле, в отличие от dBASE III PLUS, таблица dBASE 5.0 под DOS для ввода нового текста использует удаленную область. dBASE III PLUS всегда добавляет новый текст в конец .DBT-файла. В dBASE III PLUS размер .DBT-файла растет всякий раз при добавления нового текста, даже если перед этим текст был удален.
Данная информация взята из справочника по dBASE под DOS ("dBASE for DOS Language Reference manual", Appendix C).
Структура заголовка файла данных для таблицы dBASE 5.0 под Windows.
Заголовок табличного файла Байт Содержание Описание 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 байт Зарезервированная область для многопользовательского использования 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 как показано ниже.
Бинарные, МЕМО, OLE-поля и .DBT-файлы
Бинарные, MEMO и OLE-поля хранят данные в .DBT-файлах, состоящих из перечисляемых последовательных блоков (0, 1, 2 и т.д.). Переменная BLOCKSIZE определяет размер каждого блока. Первый блок в .DBT-файле (нулевой блок) – заголовок .DBT-файла.
Бинарное, OLE– или MEMO-поле каждой записи .DBF-файла содержит номер (значение указывается в кодовой странице OEM), указывающий на блок с хранимыми данными. Если поле не содержит никаких данных, .DBF-файл будет заполнен пробелами (20h) (а не числами).
В случае изменения данных какого-либо поля, блоки могут изменить свои порядковые номера для отображения новой позиции данных в .DBT-файле.
Если вы удаляете текст в бинарном, OLE– или МЕМO-поле, в отличие от dBASE III PLUS и dBASE IV, таблица dBASE 5.0 под Windows для ввода нового текста использует удаленную область. dBASE III PLUS всегда добавляет новый текст в конец .DBT-файла. В dBASE III PLUS размер .DBT-файла растет всякий раз при добавления нового текста, даже если перед этим текст был удален.
Данная информация взята из справочника по dBASE под Windows ("dBASE for Windows Language Reference manual", Appendix C).
Предупреждение: У Вас есть право использовать данную техническую информацию с продуктом фирмы Borland только лишь в случае, когда это не противоречит Лицензионному соглашению, поставляемую с программным продуктом.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Установка размера файла, инициализация файла и разреженные файлы
Установка размера файла, инициализация файла и разреженные файлы Функция SetEndOfFile позволяет переустановить размер файла, используя текущее значение указателя файла для определения его размера. Возможно как расширение, так и усечение файла. В случае расширения файла
4.2 СТРУКТУРА ФАЙЛА ОБЫЧНОГО ТИПА
4.2 СТРУКТУРА ФАЙЛА ОБЫЧНОГО ТИПА Как уже говорилось, индекс включает в себя таблицу адресов расположения информации файла на диске. Так как каждый блок на диске адресуется по своему номеру, в этой таблице хранится совокупность номеров дисковых блоков. Если бы данные
Структура конфигурационного файла ntp.conf
Структура конфигурационного файла ntp.conf Для настройки средств NTP используется файл ntp.conf, который обычно размещается в каталоге /etc. Как и во многих других конфигурационных файлах, строки, содержащие комментарии, начинаются с символа #, а в остальных строках задаются
8.1. Структура файла rc.firewall.txt
8.1. Структура файла rc.firewall.txt Все сценарии, описанные в этом руководстве, имеют определенную структуру. Сделано это для того, чтобы сценарии были максимально похожи друг на друга, облегчая тем самым поиск различий между ними. Эта структура довольно хорошо описывается в
1.8. Таблицы
1.8. Таблицы Таблицы помещаются в тексте в порядке ссылки на них по окончании того абзаца, в котором таблица была впервые упомянута. Они нумеруются арабскими цифрами внутри каждого раздела. В правом верхнем углу таблицы над заглавием записывают слово «Таблица » и
Таблицы
Таблицы В этом подразделе рассмотрены следующие темы:• редактирование и форматирование таблиц;• работа с данными в таблице.На форматирование таблицы у меня обычно уходит больше времени, чем на ее создание. Можно ли автоматизировать этот процесс?Форматирование таблицы
Структура таблицы
Структура таблицы Очень часто применение структуры таблицы может упростить поиск и работу с нужными данными. Предположим, вы создаете прайс-лист, в котором содержатся товары самых разных групп. Этот прайс-лист будет включать заголовки групп товаров, возможно, заголовки
Таблицы
Таблицы Команда TABLE осуществляет создание пустой таблицы объектов в чертеже. Вызывается команда из падающего меню Draw ? Table… или щелчком на пиктограмме Table… на панели инструментов Draw. В результате открывается диалоговое окно вставки таблицы Insert Table – рис. 10.7. Рис. 10.7.
Таблицы
Таблицы Инструменты работы с таблицами в Word-2003 значительно усовершенствованы по сравнению с предыдущими версиями этой программы. Теперь создать таблицу в тексте Word можно буквально двумя движениями мышки.Самый простой способ – нарисовать таблицу. Войдите в меню Таблица
3.1.1. Структура crontab–файла
3.1.1. Структура crontab–файла Чтобы планировать выполнение заданий в определенное время, нужно знать формат записей в crontab–файле. Каждая запись содержит шесть полей; 1 Минуты — 0—59 2 Часы — 0—23 (0 означает полночь) 3 День месяца — 1—31 4 Месяц — 1—12 5 День недели — 0—7 {0 и 7
2.6. Таблицы
2.6. Таблицы 2.6.1. Цифровой материал для достижения лучшей наглядности и сравнимости показателей, как правило, следует оформлять в виде таблицы.2.6.2. Оформление таблиц должно производиться в соответствии с требованиями ГОСТ 1.5-85.Таблица может иметь заголовок, который следует
§ 2.1 Структура файла FictionBook. Базовые понятия
§ 2.1 Структура файла FictionBook. Базовые понятия Книга FictionBook представляет собой XML-файл.Структурно этот файл можно разделить на три части.1) Desсription — заголовок (описание) книги;2) Body — непосредственно текст книги. В книге может быть несколько body.3) Binary — необязательная часть.