Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение пароля на таблицу Paradox, сабж 
:(
    Опции темы
counterfeit
Дата 5.5.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.5.2006

Репутация: нет
Всего: нет



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

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

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

Всем заранее благодарен!!!!!! 
PM MAIL   Вверх
Dynamic
Дата 6.5.2006, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 2
Всего: 15



не вникал в суть, взял из ФАК:
Код

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;

а вообще, если есть возможность, сваливай с парадокса как можно быстрее, хлопот не оберешься, особенно с битыми индексами... По собственному опыту говорю... 


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
counterfeit
Дата 6.5.2006, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.5.2006

Репутация: нет
Всего: нет



да это тоже самое...

а на счет парадокса - согласен.. вот только это не моя прога работает с парадоксом а банк-клиент с ней работает.. а мне надо из учетки (1с, сейчас JDEdwards) автоматически выгружать платежи... с 5-ю банк клиентами справился, а с этим не могу.. вернее могу - есть общие пароли которые любую запароленую парадоксовскую таблицу открывают.. но лично для меня это уже дело принципа - неужели никак нельзя ее открыть или поменять пароль? 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0398 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.