Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.21;
Скачать: CL | DM;

Вниз

MDX в DBF.   Найти похожие ветки 

 
Drowsy   (2008-03-25 02:32) [0]

Была индексированная таблица Table.dbf с индексным
файлом Table.MDX. Можно ли, если этот файл (MDX) , безнадёжно испорчен, или вообще потерян, средствами BDE восстановить работу с  Table.dbf.  ( Что ни пытаюсь делать, всё вываливается ошибка (" Index does not exists. File : Table.MDX")).


 
Виталий Панасенко(дом)   (2008-03-25 08:45) [1]

Попытайся открыть DBD, он должен предложить сделать Deattach индекса(один из вариантов)


 
Drowsy   (2008-03-25 12:22) [2]

Спасибо, так можно.  
Но нужно это сделать программно.


 
Anatoly Podgoretsky ©   (2008-03-25 14:25) [3]

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

> Но нужно это сделать программно.

Что мешает, работай с БДЕ, а не с VCL - dbiRegisterCallback


 
Anatoly Podgoretsky ©   (2008-03-25 14:30) [4]

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

> Но нужно это сделать программно.

Что мешает, работай с БДЕ, а не с VCL - dbiRegisterCallback


 
Drowsy   (2008-03-25 14:34) [5]

Anatoly Podgoretsky, спасибо.
Описание есть внутри программы.
Если dbiRegisterCallback позволяет отсоединить индекс - то это то, что надо!
Буду посмотреть про эту функцию....


 
Drowsy   (2008-03-25 15:20) [6]

Да-а-а, с этим без полбанки не разобраться... :)


 
Drowsy   (2008-03-25 15:40) [7]

О, ни фига не понял как, но с помощью примера в хелпах получилось!!!
Где-бы почитать по азбучному , про механизм dbiRegisterCallback?!


 
Anatoly Podgoretsky ©   (2008-03-25 22:19) [8]


> Да-а-а, с этим без полбанки не разобраться... :)

Какие еще полбанки, есть справка и прекрасные примеры. Вряд ли ты где то еще найдешь информацию. Примеры аж на двух языках.


 
Anatoly Podgoretsky ©   (2008-03-25 22:21) [9]

Вот выписка из примера

Example 1: Create a callback that handles the condition of a missing .MDX file for a dBASE file or a missing .CDX file for a FoxPro file:

Разве ты не это хочешь?


 
Drowsy   (2008-03-25 22:26) [10]

Да, я именно этого и хотел и тупо запихал этот Example в прогу.
Всё получилось как надо, спасибо огромное!!!
Теперь осталось понять, как это работает. :)


 
Anatoly Podgoretsky ©   (2008-03-26 00:02) [11]

> Drowsy  (25.03.2008 22:26:10)  [10]

Очень просто, если происходит какая либо ошибка и не только, то через callback тебе выдают управления для принятия решения. DBD именно так и работает, но программно возможности больше. Ты внимательно прочитай там справку. Только в каком то примере есть мелкая ошибка, в каком уже не помню.


 
Drowsy   (2008-03-26 02:22) [12]

Да, в дельфийском примере есть несовместимость параметров:

 Check(DbiRegisterCallBack(
   nil,                         //Cursor (Optional)
   cbINPUTREQ,                  //Type of Callback
   LongInt(0),                  //Pass-through client data
   sizeof(CBInputDesc),         //Callback buffer len
   cbinfo,                      // ?????????????   Pointer to callback function
   @myfunc                      //????????????? Call back fn being registered

   ));

А так нормально:

 Check(DbiRegisterCallBack(
   nil,                         //Cursor (Optional)
   cbINPUTREQ,                  //Type of Callback
   LongInt(0),                  //Pass-through client data
   sizeof(CBInputDesc),         //Callback buffer len
   @cbinfo,                      // !!!!!!!!!!!!!!   Pointer to callback function
   pfDBICallBack(@myfunc)        //!!!!!!!!!!!!!!!!  Call back fn being registered



Страницы: 1 вся ветка

Текущий архив: 2008.09.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
2-1218180575
egik
2008-08-08 11:29
2008.09.21
Как дать кооманду "восстановить" MDIChild форме?


2-1218444298
Neon-w
2008-08-11 12:44
2008.09.21
Собрать из двух один)


15-1217481408
kyn66
2008-07-31 09:16
2008.09.21
Заполнение бланка из программы


2-1218434218
Mops
2008-08-11 09:56
2008.09.21
TWebbrowser и IE


2-1218521158
Sergey2
2008-08-12 10:05
2008.09.21
Доступ к базе по локальной сети через IP