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

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

Изменение пароля БД Paradox из приложения [D5, Paradox]


ks ©   (2005-09-08 10:19:00) 

День добрый!
Подскажите пожалуйста можно ли изменить пароль доступа к БД типа Paradox (заданый при проектировании) из приложения которое с ней работает, если да, то каким образом это можно сделать?
Пробовал использовать процедуры
AddPassword
RemovePassword

выполненяется без ошибок, но пароль остаётся прежний.


ks   (2005-09-08 17:22:00) [1]

проверил - результат тот же, при повторном запуске приложения действителен старый пароль, новый не проходит...
в чём может быть причина? В документации написано что должна работать замена пароля через:
AddPassword
RemovePassword

может есть какие то нюансы не описаные в документации...


Bob   (2005-09-08 16:00:00) [2]

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;

взято из DelphiWorld. работает или нет - сказать не могу. проверь


Наверх

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