среда, 3 апреля 2013 г.

Умный BDE

   Пришлось поменять структуру каталогов базы данных одного из рабочих проектов и вдруг получил ошибку File name is too long for a Paradox version 5.0 table. То есть оказывается что таблицы в формате Paradox 5.0, а не 7.0 как я думал, а формат 5.0 (5 уровень) не поддерживает длинные имена (более 64 символов). Но ведь должна быть версия 7.0, путем изысканий в интернете выяснилось что "умный" BDE при создании таблицы анализирует какие возможности используются и выбирает минимально возможный уровень (версию) БД для поддержания совместимости с ранними версиями. 
   В итоге имеем в сетевом каталоге БД часть таблиц с уровнем 5 и часть с уровнем 7. Проверяется легко с помощью Database Sesktop (DBD): открываем таблицу, выбираем Table - Info structure... и в заголовке появившегося окна видим либо Structure information Paradox 7... либо Structure information Paradox 5.0 for Windows...
   Что же теперь делать?
   Либо конвертировать все таблицы 5 уровня  в  формат 7 уровня и переделывать соответствующий софт чтобы таблицы 5 уровня не появлялись (как это сделать? если кто знает ответ отпишитесь в комментариях), либо подружить программы с короткими путями, используя следующую функцию:
function ExtractShortPathName(const FileName: string): string;
var
  Buffer: array[0..MAX_PATH - 1] of Char;
begin
  SetString(Result, Buffer,
    GetShortPathName(PChar(FileName), Buffer, SizeOf(Buffer)));
end;
Правда возможен случай когда даже сокращенный с помощью функции путь будет длиннее 64 символов, впрочем это не мой вариант, но стоит учитывать.

 

0 коммент.:

Отправить комментарий