Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Recovery Dbf (Необходимо восстановить заголовок таблицы) [dBase, FoxPro]


Страницы:   1 2

Rustam_Katana ©   (2002-11-21 08:52:00) 

Доброго времени суток, мастера...
Есть проблема и достаточно серьезная - рухнула база, все мои попытки восставить ее ничем хорошим для нее незакончились. Пытался восстанавливать и всякими там FixDbf,SalvDbf (все они пестрят просто лозунгами о восстановлении без проблем header-ов) но нифига не помогло.
Размер базы 7,5 метров. Если кто-то встречался с подобной проблемой и находил выходы, укажите хотябы направление.
Заранее благодарен за все попытки помочь.


Zn   (2002-11-21 12:14:00) [21]

В Norton Utilities под DOS (в 8 и ранее) была утилитка для восстановления повреждённых dbf-ов. Несколько раз пользовался. Но чаще открывал повреждённый файл dbf-редактором (назывался de, подробностей не помню), добавлял пустую запись, сохранял и тогда заголовок восстанавливался.


xenon   (2002-11-21 12:10:00) [22]

Кстати, в комплекте с нортон-командером есть dbview.exe,
он сам восстанавливает кол-во записей.
Если у тебя нет, могу кинуть тебе в ящик.


Rustam_Katana   (2002-11-21 12:08:00) [23]

М-да..
Инфой снабдили, теперь надо садится и пробовать.
Благодарю всех за участие.


Anatoly Podgoretsky   (2002-11-21 12:02:00) [24]

Программа простая, вот алгоритм

открыть файл эталон на чтение (двоиный нетипизированный файл)
открыть поврежденный файл на запись
прочитать первый файл полностью
записать все байты в поврежденный, в начало
закрыть все

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

Такое можно делать если ты создал новую структур один к одному
Тогда у тебя в файле эталоне только заголовок и ноль записей, поэтому можно делать простую замену.


xenon   (2002-11-21 11:56:00) [25]

(Длина файла - длина заголовка) / длина записи
Длину записи можно узнать, в Фокспро в окне модификации струкуры
Длина заголовка - c с первого байта по символ CHR(13)
Записи хранятся в тестовом виде, поэтому сразу видно, где они начинаются.
Длину файла сам как-нибудь узнаешь :)


Rustam_Katana   (2002-11-21 11:44:00) [26]

Кстати, ну подправлю я заголовок, а дальше то что??
Количество записей где взять?


Rustam_Katana   (2002-11-21 11:41:00) [27]

>Anatoly Podgoretsky
Какую программку надо написать?? Я вчера пробовал переделывать компоненты на Delphi5 pgDbf, самописный для DBF, он там исключения всякие выдовал, так нифига я и не смог сделать, вылетала на получении списка полей :(
Может у тебя есть что-то, так поделись.

>VladTen нету у меня в RX таких модулей


Anatoly Podgoretsky   (2002-11-21 11:14:00) [28]

xenon © (21.11.02 10:30)
Это единственно что надо делать сверх описанного, но вот тут уже на помощью можно привлечь лечилку, но только нормальную, хотя я лично предпочту ручками или просто востановлю таблицу из архива за предыдущий час.


VladTen   (2002-11-21 11:07:00) [29]

В компонентах RX есть прога с исходниками "DBEXPL32". Достаточно им попытаться открыть таблицу, и все проблемы как ветром сдувает (сам не раз пользовался).


xenon   (2002-11-21 10:30:00) [30]

> Anatoly Podgoretsky
Ручками все равно придется править кол-во записей.


Anatoly Podgoretsky   (2002-11-21 10:21:00) [31]

Не надо ручками переписывать ничего, чревато ошиками, за пару минут напиши программу, читать новый файл и записать заголовок в старый. Надуюсь что все свои эксперименты проводишь над копией все таки.


makdi   (2002-11-21 10:19:00) [32]

Могу посоветовать прогу FOX.EXE, если твои базы под досом, он открывает ьаблицу с рухнувшим загаловком, потом добавляешь запись, удаляешь её и все - база функционирует (только нужно сделать переиндуксацию ). Если нужно пиши на мыло вышлю.


xenon   (2002-11-21 09:49:00) [33]

Не верь им. Я уже много раз на всякие грабли наступал.
Самый надежный инструмент - руки + Hiew + калькулятор.


Rustam_Katana   (2002-11-21 09:39:00) [34]

Щас скачал FixDbf32 он что-то пытается сделать, грит непонятные поля, просит типы задать, но пошел уже бегать по кускам записей, а не пополям, так что придется наверно повашему методу.

А может есть какая еще восстановлялка,а?


xenon   (2002-11-21 09:32:00) [35]

hiew.exe или что-нибудь в этом роде.
в Dos Navigatore хороший редактор.
В старом корректишь байтики в заголовке.
Значения записываешь из НОВОГО, как сказал Anatoly Podgoretsky.
Не забудь исправить кол-во записей в заголовке.


Anatoly Podgoretsky   (2002-11-21 09:20:00) [36]

Править не нужно, нужно создать НОВЫЙ (создать новую пустую таблицу)


Rustam_Katana   (2002-11-21 09:17:00) [37]

Структура известна, чем заголовок править?


Anatoly Podgoretsky   (2002-11-21 09:05:00) [38]

Если еизвестна структура, то можно применить следующее, создать новую индетичную таблицу, затем физически заменить заголовок, останется только восстановить в заголовку счетчик количества записей.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо