Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Спасибо за идеи, высказанные в группах новостей и присланные по электронной почте. Я думаю, что нашел лучшее решение.
Очевидно, BDE содержит номер версии структуры, по крайней мере для файлов Paradox. (Я не могу поручиться за dBase и другие форматы.) Всякий раз при изменении структуры (например, в Database Desktop) BDE увеличивает номер версии. Следующий модуль содержит функцию, которая возвращает версию структуры базы данных:
(***************************************************************************** * DbUtils.pas * * Утилита для работы с базами данных * * Создана 09/20/96 *****************************************************************************) unitDbutils;
(****************************************************************************) (****************************************************************************) interface(****************************************************************************) (****************************************************************************) uses
DbTables; function
DbGetVersion(table: TTable): LongInt;
(****************************************************************************) (****************************************************************************) implementation(****************************************************************************) (****************************************************************************) uses
Db, DbiProcs, DbiTypes,
{DbiErrs,} SysUtils; {---------------------------------------------------------------------------} (* * Цель: определение номера версии структуры таблицы * Параметры: table (I) - интересующая нас таблица * Возвращаемая величина: номер версии * Исключительная ситуация: EDatabaseError *) functionDbGetVersion(table: TTable): LongInt; var
hCursor: hDBICur; tableDesc: TBLFullDesc; cName: array
[0..255] of
Char; begin
{ копируем имя таблицы в строку 'с' } StrPCopy(cName, table.TableName); { просим BDE создать запись, содержащую информацию об определенной таблице } Check(DbiOpenTableList(table.DBHandle, True
, False
, cName, hCursor));
{ получаем запись, содержащую информацию о структуре } Check(DbiGetNextRecord(hCursor, dbiNOLOCK, @tableDesc, nil));
{ возвращаем поле записи, содержащее номер версии структуры нашей таблицы } Result := tableDesc.tblExt.iRestrVersion; Check(DbiCloseCursor(hCursor)); end; end
.