Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
9-1084454894
matsic
2004-05-13 17:28
2004.09.05
Статистическая обработка


14-1092862180
VID
2004-08-19 00:49
2004.09.05
Ещё раз ищу прокси


1-1093153757
SNV-Soft
2004-08-22 09:49
2004.09.05
Сохранить часть формы в файл


3-1092312735
sesh
2004-08-12 16:12
2004.09.05
PostgreSQL


1-1092740362
C55
2004-08-17 14:59
2004.09.05
класс TString





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский