1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

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

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

    counterfeit Гость

    Репутация:
    0
    Здрасте всем!!

    Вообщем проблема следующая..
    Есть база 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;

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

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

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