Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

О DBF-файлах [dBase, FoxPro]


ИМХО ©   (2004-06-01 06:27:00) 

Как по заголовку в dbf-файле узнать, dBase это (это dBase, то какой), FoxPro ли, Clipper и т.д.?
Поделитесь, плиз, способом определения.


sniknik   (2004-06-01 08:40:00) [1]

вот еще это в типах мемо поля

GSobjMemo  = class(GSO_DiskFile)
     Owner        : GSO_DiskFile;
     TypeMemo     : Byte;   {83 for dBase III; 8B for dBase IV; F5 for FoxPro}
     MemoLocation : Longint;         {Current Memo record}
     MemoBloksUsed: word;


sniknik   (2004-06-01 08:37:00) [2]

по заголовку не всегда можно, различия до dBase IV минимальны (а после критичы :) другим не откроеш) проще по индексу, а в заголовке есть байт определяющий тип (только старый фокс в этот байт пишет признак dBase III, можеш скачать имеющий исходники многотипный движок и посмотреть как он определяет, Halcyon к примеру).
и кстати Clipper "всеяден" может работать с фоксовыми(возможно и другими) таблицами без изменения структуры. (родную сразу видно когда на заголовок смитриш, на работу дойду могу показать разницу)
только думаю основной вопрос не в этом, не из абстрактного любопытства же понадобилось.

из Halcyon заголовок описание (только это не единственное место где упоминаются типы)

  GSR_DBFHeader = packed Record
     DBType     : Byte;
     Year       : Byte;
     Month      : Byte;
     Day        : Byte;
     RecordCount: LongInt;
     Location   : Word;
     RecordLen  : Word;
     Reserve1   : Array[0..1] of Byte;
     TranIncmpl : byte;
     Encrypted  : byte;
     MultUseFlg : Longint;
     UserIDLast : Longint;               {!!RFG 081897}
     Reserve2   : Array[0..3] of Byte;
     DBTableFlag: Byte;                  {Table Flags}
                                         {  1 = production index}
                                         {  2 = has memos (VFP)}
                                         {  4 = is a DBC (VFP)}
     LangID     : Byte;
     Reserve3   : Array[0..1] of Byte;
  end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо