Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 28.03.2010, 14:38   #1
maxid
 
Регистрация: 28.08.2008
Сообщений: 3
По умолчанию Как очистить *.DBT файлы от пустого пространства?

Я использую компонент TDBF. В проекте имеются DBF-файлы (dBaseIV) с memo-полями. При удалении записей из DBF, blob файл (*.dbt) не уменьшается в размере. Подскажите как его можно сжать? Или может быть есть другие способы очистки от пустоты...
maxid вне форума Ответить с цитированием
Старый 28.03.2010, 15:29   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

TDbf.PackTable
пробовали? не помогает?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.03.2010, 15:57   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Если вы используете BDE, обратите внимание на прямую функцию DbiPackTable.
Подробности и пример использования - в BDE32.HLP.

Собственно, суть работы всякого рода упаковщиков сводится к нескольким шагам:
1. Копирование записей, не помеченных как удаленные, во временную таблицу.
2. Полная очистка (обнуление) исходной таблицы.
3. Копирование записей из временной таблицы в исходную.
4. Удаление временной таблицы.

Последний раз редактировалось mihali4; 28.03.2010 в 16:03.
mihali4 вне форума Ответить с цитированием
Старый 30.03.2010, 16:17   #4
maxid
 
Регистрация: 28.08.2008
Сообщений: 3
По умолчанию Не помогает

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
TDbf.PackTable
пробовали? не помогает?
DBT становится еще больше...((
maxid вне форума Ответить с цитированием
Старый 30.03.2010, 20:50   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

1) TDBF полностью в исходниках.
пройдитесь пошагово, посмотрите, что делается и как..
Хотя бы на уровне структурных (процедурных) блоков...
может, что то и нащупаете..
2) надаеюсь, версию TDBF используете крайнюю на текущий момент? (это версия 6.9.1)
к слову, а Дельфи какая версия?

3) если ничего не помогает, попробуйте сделать по абсолютно точному алгоритму, предложенному Михалычем в пост #3 — копируйте Вашу таблицу в новую таблицу..
Если и это не поможет, тогда я рекомендую заменить TDBF на что-нибудь другое или отказаться от мемо-полей!

p.s. если выложите архив с исходником проекта + тестовая БД с "несжимаемым" мемо-полем, можно будет "пощупать" ручками, и попытаться найти решение Вашей проблемы..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.04.2010, 16:16   #6
maxid
 
Регистрация: 28.08.2008
Сообщений: 3
По умолчанию

Delphi 7, а TDBF 6.9
Попробую сначала порыться в исходниках TDBF. Если ничего не выйдет тогда скорее всего сделаю как предлагал Михалыч, думаю что прокатит. В общем дальше видно будет....
Спасибо за помощь!
maxid вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как очистить экран? dimorik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 01.10.2008 17:29
Как очистить Canvas? beegl Общие вопросы Delphi 4 30.05.2008 01:51
Как очистить Canvas? Pro_BerSerK Общие вопросы Delphi 9 30.01.2008 16:03
как очистить экран doncova1 Общие вопросы C/C++ 3 18.03.2007 09:50


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840