Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

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

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

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

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

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

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

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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