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

  • Автор темы counterfeit
  • Дата начала
Статус
Закрыто для дальнейших ответов.
C

counterfeit

Гость
#1
Здрасте всем!!

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

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

Всем заранее благодарен!!!!!!
 
Статус
Закрыто для дальнейших ответов.