Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Поставить пароль на таблицу Paradox

Delphi , Базы данных , Paradox

Поставить пароль на таблицу Paradox

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   Bde, SysUtils, dbtables, windows;


 function StrToOem(const AnsiStr: string): string;
 begin
   SetLength(Result, Length(AnsiStr));
   if Length(Result)  0 then
     CharToOem(PChar(AnsiStr), PChar(Result));
 end;

 function TablePasswort(var Table: TTable; password: string): Boolean;
 var
   pTblDesc: pCRTblDesc;
   hDb: hDBIDb;
 begin
   Result := False;
   with Table do
   begin
     if Active and (not Exclusive) then Close;
     if (not Exclusive) then Exclusive := True;
     if (not Active) then Open;
     hDB := DBHandle;
     Close;
   end;
   GetMem(pTblDesc, SizeOf(CRTblDesc));
   FillChar(pTblDesc^, SizeOf(CRTblDesc), 0);
   with pTblDesc^ do
   begin
     StrPCopy(szTblName, StrToOem(Table.TableName));
     szTblType := szParadox;
     StrPCopy(szPassword, StrToOem(Password));
     bPack      := True;
     bProtected := True;
   end;
   if DbiDoRestructure(hDb, 1, pTblDesc, nil, nil, nil, False) DBIERR_NONE then Exit;
   if pTblDesc  nil then FreeMem(pTblDesc, SizeOf(CRTblDesc));
   Result := True;
 end;

Функция TablePasswort в Delphi, которая устанавливает пароль для таблицы Paradox. Вот шаг за шагом, что она делает:

  1. Функция принимает два параметра: Table, объект TTable, представляющий таблицу Paradox, и password, строка, содержащая новый пароль.
  2. Функция проверяет, является ли таблица уже открыта и эксклюзивна, и если да, то закрывает ее. Затем она устанавливает свойство Exclusive в True, чтобы обеспечить, что только один доступ к таблице может быть открыт одновременно.
  3. Если таблица не активна (то есть еще не была открыта), функция открывает ее.
  4. Функция получает handle базы данных (hDB) ассоциированный с таблицей и закрывает его.
  5. Блок памяти выделяется с помощью GetMem для хранения структуры pCRTblDesc, которая представляет описание таблицы.
  6. Структура pCRTblDesc заполняется информацией о таблице, включая ее имя (преобразованное из Unicode в OEM кодовую страницу с помощью функции StrToOem), тип (szParadox) и пароль (также преобразованный в OEM кодовую страницу).
  7. Флаги bPack и bProtected устанавливаются в True, указывая, что таблица должна быть упакована (то есть ее данные должны быть сжаты) и защищена паролем, соответственно.
  8. Функция вызывает функцию DbiDoRestructure, передавая handle базы данных, структуру описания таблицы (pTblDesc) и другие параметры. Эта функция отвечает за установку пароля на таблицу Paradox.
  9. Если функция DbiDoRestructure возвращает код ошибки, отличный от DBIERR_NONE, функция выходит с статусом ошибки.
  10. Наконец, если блок памяти, выделенный для структуры pCRTblDesc, не был null, он освобождается с помощью FreeMem.

Функция StrToOem используется для преобразования строк Unicode в строки OEM кодовой страницы. Это вероятно необходимо потому, что таблицы Paradox используют OEM кодовые страницы для хранения имен таблиц и паролей.

Альтернативное решение могло бы быть использовать свойство Password компонента TDatabase, чтобы установить пароль на таблицу, а не использовать низкоуровневую функцию DbiDoRestructure. Однако это может требовать более специфических знаний Delphi и может не работать с всеми версиями Paradox.

Поставить пароль на таблицу Paradox с помощью функции TablePasswort позволяет обеспечить безопасность доступа к базе данных.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Paradox ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 13:14:10/0.0031859874725342/0