![]() |
|
|
![]()
|
|
| Thunder2 |
|
|||
|
Unregistered |
Есть исходник компонент который ломиться на прямую к таблица DBF. Все хорошо , но ... кодировка ! Стал разбирать в исходнике и иот наткнулся на такую штуку:
Имеем определение типа данных "Запись" следующего вида TdbfField = record FieldName :array[1..11] of char; { Name of this record } FieldType :char; { type of record - C,N,D,L,etc. } fld_addr :longint; { not used } Width :byte; { total field width of this record } Decimals :byte; { number of digits to right of decimal } MultiUser :smallint; { reserved for multi user } WorkAreaID :byte; { Work area ID } MUser :smallint; { reserved for multi_user } SetFields :byte; { SET_FIELDS flag } Reserved :array[1..4] of byte; { 8 bytes reserved } end; { record starts } {оригинальный кусок из исходника} Казалось бы все просто, но ... далее следует объявление переменной: var Fld: TdbfField; Тоже ничего особенного. Но вот непонятная для меня вещь: выражение SizeOf(Fld) дает значение 32 байта, а выражение SizeOf(Fld.FieldName)+SizeOf(Fld.FieldType)+SizeOf(Fld.fld_addr)+SizeOf(Fld.Width) +SizeOf(Fld.Decimals)+SizeOf(Fld.MultiUser)++SizeOf(Fld.WorkAreaID)+SizeOf(Fld.MUser) +SizeOf(Fld.SetFields)+SizeOf(Fld.Reserved) дает значение 28. Тот же результат можно получить просуммировав размеры значений полей записи: 11+1+4+1+1+2+1+2+1+4. Как ни странно компонент работает из этого исходника на "живой" форме. Ошибок при работе не возникает, но ,еще раз повторюсь, DBF файл из VFP 5.0 отображает (как я понял) по DOS-кодировке. |
|||
|
||||
| bas |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 14.8.2002 Где: Молдова, Кишинев Репутация: 1 Всего: 2 |
18-32 - зарезервированные байты и в основном не используються.
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
(28 - это сумма размеров полей, но где-то между некоторыми полями есть промежуток, поэтому размер структуры например не 28, а 29)... -------------------- С уважением, г-н Посол. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |