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

Добавляем пароль к таблице Paradox

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

Добавляем пароль к таблице Paradox

- Алло, техотдел? Я пароль набираю - а меня не пускают.
- Значит, правильно набирать надо.
- Я правильно набираю! Пять звездочек!


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;

Функция Delphi TablePasswort добавляет пароль к таблице Paradox. Функция принимает два параметра: объект TTable и строку пароля.

Разбивка кода:

  1. Первая часть функции проверяет, является ли таблица активной и неэксклюзивной, и если так, то закрывает ее. Затем она устанавливает свойство эксклюзивности в True и открывает таблицу.
  2. Функция получает обрабатывающий базу данных (handle) из таблицы и закрывает его.
  3. Она выделяет память для структуры CRTblDesc с помощью функции GetMem.
  4. Функция заполняет структуру CRTblDesc информацией о таблице, типу (Paradox), пароле, информации о пакетировании и защиты.
  5. Она вызывает функцию DbiDoRestructure, чтобы добавить пароль к таблице. Если функция возвращает код ошибки DBIERR_NONE, то это означает, что пароль был успешно добавлен.

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

Предложение по улучшению: вместо использования функций GetMem и FreeMem для ручного управления памятью, рекомендуется использовать встроенные в Delphi функции управления жизненным циклом объектов, такие как интерфейсы или умные указатели. Это может помочь предотвратить утечки памяти и сделать код более надежным.

Кроме того, было бы полезно добавить обработку ошибок в функцию, чтобы поймать любые исключения, которые могут возникнуть при добавлении пароля. Вы можете использовать блоки try-except или обрабатывать конкретные исключения, такие как EDbAccessError.

Наконец, имя функции и комментарии указывают, что она предназначена для добавления паролей к таблицам Paradox, но было бы полезно включить краткое описание, что функция делает и как ее использовать в документации.

Добавляем пароль к таблице Paradox: описана функция TablePasswort, которая добавляет пароль к таблице Paradox с использованием библиотеки dbtables и windows.


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

Получайте свежие новости и обновления по 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:09:57/0.0047581195831299/1