Читать «Советы по Delphi. Версия 1.0.6» онлайн - страница 33

Валентин Озеров

В случае изменения данных какого-либо поля, блоки могут изменить свои порядковые номера для отображения новой позиции данных в .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 только лишь в случае, когда это не противоречит Лицензионному соглашению, поставляемую с программным продуктом.

Разное

Сканирование версии структуры базы данных

Спасибо за идеи, высказанные в группах новостей и присланные по электронной почте. Я думаю, что нашел лучшее решение.

Очевидно, BDE содержит номер версии структуры, по крайней мере для файлов Paradox. (Я не могу поручиться за dBase и другие форматы.) Всякий раз при изменении структуры (например, в Database Desktop) BDE увеличивает номер версии. Следующий модуль содержит функцию, которая возвращает версию структуры базы данных:

(*****************************************************************************

* DbUtils.pas

*

* Утилита для работы с базами данных

*

* Создана 09/20/96

*****************************************************************************)

unit Dbutils;

(****************************************************************************)

(****************************************************************************)

interface

(****************************************************************************)

(****************************************************************************)

uses DbTables;

function DbGetVersion(table: TTable): LongInt;

(****************************************************************************)

(****************************************************************************)

implementation

(****************************************************************************)

(****************************************************************************)

uses Db, DbiProcs, DbiTypes, {DbiErrs,} SysUtils;

{---------------------------------------------------------------------------}

(*

* Цель:                    определение номера версии структуры таблицы

* Параметры:               table (I) – интересующая нас таблица

* Возвращаемая величина:   номер версии

* Исключительная ситуация: EDatabaseError

*)

function DbGetVersion(table: TTable): LongInt;

var

 hCursor   : hDBICur;

 tableDesc: TBLFullDesc;

 cName     : array[0..255] of char;

begin

 { копируем имя таблицы в строку 'с' }

 StrPCopy(cName, table.TableName);

 { просим BDE создать запись, содержащую информацию об определенной таблице }