powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как убить в DBF индекс?
4 сообщений из 4, страница 1 из 1
Как убить в DBF индекс?
    #32374318
Lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется таблица FoxPro (dbf) и возможен с ней в паре индексный файл (cdx). Бывает так, что он законно отсутствует (его и не создавали вообще), а бывает - незаконно (скажем потерялся при передаче по сети). Получив данные я отстегиваю cdx (он мне не нужен). Но в случае, если в dbf прописаны хвосты от cdx, а его самого потеряли, то как вырубить его хвосты из dbf?

Счетчик коллекции table.IndexDefs.Count показывает 0.
Методы типа table.IndexDefsClear() не очищают от хвостов cdx, а если просто не замечать этого мусора, при работе с таблицей появляются ругательные сообщения с намеками на cdx. :(
Хотелось бы решиь эту проблему.
...
Рейтинг: 0 / 0
Как убить в DBF индекс?
    #32374334
Sol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй использовать BDE Callback.
...
Рейтинг: 0 / 0
Как убить в DBF индекс?
    #32374341
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, учитывая, что эта проблема достаточно уникальна, могу посоветовать запустить FoxPro и открыть файл в нем. Он ругнется на subj тему и спросит разрешения на использование без cdx. Разреши ему, и ссылка на cdx убъется.
...
Рейтинг: 0 / 0
Как убить в DBF индекс?
    #32374679
Даниил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда-то я делал подобное следующим образом:
В CDX прописаны индексы, а в DBF-нике есть байт, отвечающий за наличие этих индексов. Если не ошибаюсь (пишу по памяти) это 24 от начала файла. Достаточно его заменить на 0 и проблема исчезнет. Разумеется, если в таблице будут сделаны какие-то изменения, то при необходимости использовать индексы, их набо будет перестраивать заново - простая смена флага в DBF на "обратно" не прокатит.

С я все-таки ошибся с номером байта, напиши - посмотрю свои старые исходники.
Либо можно проверить самому - взять два DBF-ника: один с индексами, другой без и сравнить побайтно их заголовки.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как убить в DBF индекс?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]