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

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

BDE блокирует каталог с таблицами даже если закрыты все таблицы [D6, Paradox]


PFR ©   (2004-08-09 20:21:00) 

Создаю каталог, в нем несколько табличек Paradox, затем закрываю все таблички, удаляю содержимое каталога (без проблем, вместе с net-файлом), но сам каталог удалить не могу - он залочен. NetDir указывает на этот каталог, менял на другой - не помогает.
Закрывал Session - не помогает.
Каталог разблокируется только когда открываю другую БД.
Как удалить этот каталог ?


PFR   (2004-08-10 15:03:00) [1]

Попробовал твоим методом - то же самое - все закрывается, net - файл удаляется, каталог - нет.
У меня D6, W2000, NovellClient.
>>на парадокс? не смеши. это лишнее. если есть инжинерные пароли >>то считай их нет вовсе.
пароли от глупых пользователей. заказчик требует наличие защиты, степень защиты не имеет значения, главное - визуально данные скрыты. а ломается в наше время все, главный фактор - время и ... деньги

Попробуй все-таки у себя таким образом (dbi...) установить пароль.


sniknik   (2004-08-10 14:37:00) [2]

> Да не в том проблема каким методом я пользуюсь.
конечно, проблема в том что ты не все отслеживаеш при закрытии, в отличие от стандартного компанента/метода.

> Пароли когда-нибудь ставил на таблицы?
на парадокс? не смеши. это лишнее. если есть инжинерные пароли то считай их нет вовсе.
а так да ставил, для пробы, но не для использования.


PFR   (2004-08-10 14:08:00) [3]

Да не в том проблема каким методом я пользуюсь.
Проблема в том, что после строчки
Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));
появляется залоченый ресурс 'C:\Base666'.
Каким методом здесь пользоваться значения не имеет. Пароли когда-нибудь ставил на таблицы?
Пример взят из BDE32.hlp.
У меня тоже все работает без этой строчки.
А лень в данном случае - не двигатель прогресса...


sniknik   (2004-08-10 13:45:00) [4]

не буду. зачем?
> Table1.DatabaseName := 'C:\Base666';
я же тебе говорил явно Database использовать. а не создавать скрытый от управления.

ну допустим твой код и у меня не удалит? и что? по моему то удаляет, а ты так не хошеш.
тебе что шашечки или ехать? если ехать то вяжи все на на Database.


PFR   (2004-08-10 13:25:00) [5]

Попробуй следующий код.

uses ...,BDE.
...
procedure TForm1.Button1Click(Sender: TObject);
const
 RESTRUCTURE_TRUE = WordBool(1);
var
 TblDesc: CRTblDesc;
 hDb: hDBIDb;
begin
 ForceDirectories('C:\Base666');
 Table1.DatabaseName := 'C:\Base666';
 Table1.TableType    := ttParadox;
 Table1.TableName    := 'temp.db';
 Table1.TableLevel   := 7;

 Table1.FieldDefs.Add('Temp', ftInteger);
 Table1.CreateTable;
 Table1.Exclusive := True;
 Table1.Open;

 FillChar(TblDesc, SizeOf(CRTblDesc), #0); { Initialize the table descriptor }
 with TblDesc do begin
   StrPCopy(szTblName, Table1.TableName); { Place the table name in descriptor }
   StrCopy(szTblType, szPARADOX); { Place the table type in descriptor }
   StrPCopy(szPassword, 'password'); { Master Password, Password }
   bProtected := True; //RESTRUCTURE_TRUE; { Set bProtected to True }
 end;
 Check(DbiGetObjFromObj(hDBIObj(Table1.Handle), objDATABASE, hDBIObj(hDb))); { Get the database handle from the cursor handle }
 Table1.Close; { Close the table }
 Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False)); { Add the master password to the Paradox table }
//  Check(DbiCloseDatabase(hDb)); не дает нужного эффекта
 Session.AddPassword('password');
 Table1.FieldDefs.Delete(0);
 if not ClearDir('C:\Base666', True) then //Удаление каталога вместе с содержимым из JEDI Lib. модуль JvFileUtil
   ShowMessage('Fail!');

end;


sniknik   (2004-08-10 11:30:00) [6]

> Может это глюк BDE?
может быть, может быть...

> Тогда как с ним бороться?
исправить ошибку у себяв программе.

впечатлился "глюком" так сильно, что написал програмку проверку, чуда не случилось... каталог удалился
хочеш вышлю (чего теперь с ней делать то? ;), открывает 1 таблицу, закрывает и удаляет все вместе с каталогом (по твоему должно блокировать).
правда у меня D7 и BDE самый последний что на сайте борманда (хотя его и не использую)


PFR   (2004-08-10 09:22:00) [7]

Спасибо за совет, но не помогло.
Каталог все-равно разблокируется только после закрытия программы (причем, даже после освобождения всех хандлов, финализации ВСЕХ модулей до момента окончательного выхода из проги, каталог занят)
или открытия другой БД. Может это глюк BDE? Тогда как с ним бороться?


sniknik   (2004-08-09 22:23:00) [8]

> Закрывал Session - не помогает.
попробуй еще и Database закрыть, если не пользуешся начни (не боись лишнего не будет, если неуказано оно само создается автоматом, только доступ к нему похуже).


Наверх

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