Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
ВнизBDE блокирует каталог с таблицами даже если закрыты все таблицы Найти похожие ветки
← →
PFR (2004-08-09 20:21) [0]Создаю каталог, в нем несколько табличек Paradox, затем закрываю все таблички, удаляю содержимое каталога (без проблем, вместе с net-файлом), но сам каталог удалить не могу - он залочен. NetDir указывает на этот каталог, менял на другой - не помогает.
Закрывал Session - не помогает.
Каталог разблокируется только когда открываю другую БД.
Как удалить этот каталог ?
← →
sniknik © (2004-08-09 22:23) [1]> Закрывал Session - не помогает.
попробуй еще и Database закрыть, если не пользуешся начни (не боись лишнего не будет, если неуказано оно само создается автоматом, только доступ к нему похуже).
← →
PFR (2004-08-10 09:22) [2]Спасибо за совет, но не помогло.
Каталог все-равно разблокируется только после закрытия программы (причем, даже после освобождения всех хандлов, финализации ВСЕХ модулей до момента окончательного выхода из проги, каталог занят)
или открытия другой БД. Может это глюк BDE? Тогда как с ним бороться?
← →
sniknik © (2004-08-10 11:30) [3]> Может это глюк BDE?
может быть, может быть...
> Тогда как с ним бороться?
исправить ошибку у себя в программе.
впечатлился "глюком" так сильно, что написал програмку проверку, чуда не случилось... каталог удалился
хочеш вышлю (чего теперь с ней делать то? ;), открывает 1 таблицу, закрывает и удаляет все вместе с каталогом (по твоему должно блокировать).
правда у меня D7 и BDE самый последний что на сайте борманда (хотя его и не использую)
← →
PFR (2004-08-10 13:25) [4]Попробуй следующий код.
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 13:45) [5]не буду. зачем?
> Table1.DatabaseName := "C:\Base666";
я же тебе говорил явно Database использовать. а не создавать скрытый от управления.
ну допустим твой код и у меня не удалит? и что? по моему то удаляет, а ты так не хошеш.
тебе что шашечки или ехать? если ехать то вяжи все на на Database.
← →
PFR (2004-08-10 14:08) [6]Да не в том проблема каким методом я пользуюсь.
Проблема в том, что после строчки
Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));
появляется залоченый ресурс "C:\Base666".
Каким методом здесь пользоваться значения не имеет. Пароли когда-нибудь ставил на таблицы?
Пример взят из BDE32.hlp.
У меня тоже все работает без этой строчки.
А лень в данном случае - не двигатель прогресса...
← →
sniknik © (2004-08-10 14:37) [7]> Да не в том проблема каким методом я пользуюсь.
конечно, проблема в том что ты не все отслеживаеш при закрытии, в отличие от стандартного компанента/метода.
> Пароли когда-нибудь ставил на таблицы?
на парадокс? не смеши. это лишнее. если есть инжинерные пароли то считай их нет вовсе.
а так да ставил, для пробы, но не для использования.
← →
PFR (2004-08-10 15:03) [8]Попробовал твоим методом - то же самое - все закрывается, net - файл удаляется, каталог - нет.
У меня D6, W2000, NovellClient.
>>на парадокс? не смеши. это лишнее. если есть инжинерные пароли >>то считай их нет вовсе.
пароли от глупых пользователей. заказчик требует наличие защиты, степень защиты не имеет значения, главное - визуально данные скрыты. а ломается в наше время все, главный фактор - время и ... деньги
Попробуй все-таки у себя таким образом (dbi...) установить пароль.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.028 c