Очевидно, BDE содержит номер версии структуры, по крайней мере для файлов Paradox. (Я не могу поручиться за dBase и другие форматы.) Всякий раз при изменении структуры (например, в Database Desktop) BDE увеличивает номер версии. Следующий модуль содержит функцию, которая возвращает версию структуры базы данных:
 
Код (***************************************************************************** 
* DbUtils.pas 
* 
* Утилита для работы с базами данных 
*****************************************************************************) 
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 создать запись, содержащую информацию об определенной таблице } 
Check(DbiOpen TableList(table.DBHandle, True, False, cName, hCursor)); 
 
 
{ получаем запись, содержащую информацию о структуре } 
Check(DbiGetNextRecord(hCursor, dbiNOLOCK, @tableDesc, nil)); 
 
 
{ возвращаем поле записи, содержащее номер версии структуры нашей таблицы } 
Result := tableDesc.tblExt.iRestrVersion; 
 
 
Check(DbiCloseCursor(hCursor)); 
end; 
 
end.