Изменение пароля на таблицу Paradox

Тема в разделе "Delphi - Базы данных", создана пользователем counterfeit, 5 май 2006.

Статус темы:
Закрыта.
  1. counterfeit

    counterfeit Гость

    Здрасте всем!!

    Вообщем проблема следующая..
    Есть база Paradox в которой все таблицы запаролены (каждая отдельно, возможно одним и тем же ключем). Надо зделать прогу которая бы могла менять пасворд..
    Зделал прогу которая может установить пароль на таблицу, но поменять она его не может..
    Вот пример:

    На Билдере
    void __fastcall TfrmMain::SetPassword(AnsiString APass, AnsiString APath)
    {
    if (APath == "") return;
    hDBIDb hDb = 0; // Handle to the Database
    hDBICur hCur = 0; // Handle to the cursor (table)
    DBIResult rslt; // BDE error code
    CRTblDesc TblDesc; // Create Table Descriptor
    Check(DbiInit(NULL));
    hDb = MainTable->Handle;
    MainTable->DatabaseName = "RC";
    MainTable->TableName = APath;

    Check(DbiOpenDatabase(
    NULL, // Database name (NULL for standard Database)
    NULL, // Database type (NULL for standard Database)
    dbiREADWRITE, // Open mode (read-write or read-only)
    dbiOPENEXCL, // Excluzive mode (shared or exclusive)
    NULL, // Password (not needed for the STANDARD database)
    NULL, // Number of optional parameters
    NULL, // Field desc for optional parameters
    NULL, // Values for the optional parameters
    hDb)); // Handle to the database
    char* VPath = APath.c_str();
    char* VPass = APass.c_str();
    memset((void *) &TblDesc, 0, sizeof(CRTblDesc));
    lstrcpy(TblDesc.szTblName, VPath);
    lstrcpy(TblDesc.szTblType, szPARADOX);
    lstrcpy(TblDesc.szPassword, VPass);
    TblDesc.bProtected = true;
    rslt = DbiDoRestructure(hDb, 1, &TblDesc, NULL, NULL, NULL, FALSE);
    if (rslt == DBIERR_NONE) ShowMessage("?????? ???????????");
    else DbiError(rslt);
    if (hCur != 0) Check(DbiCloseCursor(hCur));
    if (hDb != 0) Check(DbiCloseDatabase(hDb));
    Check(DbiExit());
    }

    На паскале
    procedure TfrmMain.SetPassword(const APass, APath: string);
    var db : TDatabase;
    Desc : CRTblDesc;
    begin
    if (APath = '') then exit;
    MainTable.TableName := APath;
    MainTable.DatabaseName := 'RC';
    db := MainTable.OpenDatabase;
    FillChar(Desc, SizeOf(Desc), #0);
    StrCopy(Desc.szTblName, PChar(APath));
    StrCopy(Desc.szTblType, szParadox);
    StrCopy(Desc.szPassword, PChar(APass));
    Desc.bProtected := true;
    Check(DbiDoRestructure(db.Handle, 1, @Desc, nil, nil, nil, false));
    showmessage('Пароль установлен!');
    end;

    Может кто в курсе как это зделать...
    Мне хотябы путь решения...

    Всем заранее благодарен!!!!!!
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей