Parabox数据库 intotoday.db 别名 wu
intotoday.db在创建时已经加密了,初始密码为1234
现要在程序运行过程中动态改变密码,怎样实现?
也就是:从何处并如何读出原来的密码,再把它改为新密码,再把新密码保存起来,保存在何处

解决方案 »

  1.   

    实现在Paradox表中加密码和编程登录的方法!
    下面给出的函数 AddMasterPassword 完成添加PARADOX表 
    主口令的工作 
    AddMasterPassword(Table1, 'MyNewPassword')   procedure AddMasterPassword(Table: TTable; pswd: string); 
     const 
       RESTRUCTURE_TRUE = WordBool(1);  var 
       TblDesc: CRTblDesc; 
       hDb: hDBIDb;  begin 
       {表打开?表是独占吗?} 
       if (Table.Active = False) or (Table.Exclusive = False) then 
         raise EDatabaseError.Create('数据表必须在独占方式才可以添加口令');    {初始化表描述区 } 
       FillChar(TblDesc, SizeOf(CRTblDesc), 0);    with TblDesc do 
       begin 
         { 把表名放到描述区 } 
         StrPCopy(szTblName, Table.TableName); 
         { 把表类型放到描述区 } 
         StrCopy(szTblType, szPARADOX);      StrPCopy(szPassword, pswd);      { 设置BPROTECTED为TRUE } 
         bProtected := RESTRUCTURE_TRUE; 
       end;    { 从当前的HANDLE里得到DATABASE的HANDLE } 
       Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb))); 
       { 关闭表 } 
       Table.Close; 
       { 添加主口令到PARADOX表里} 
       Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, FALSE)); 
        {添加一个新口令到SESSION} 
       Session.AddPassword(pswd); 
       {重新打开表 } 
       Table.Open; 
     end; 说了一大堆,帮助理解,认识更多啊^0^,下面这两句才时解决你问题的根本,  
    //*************************************************  
      Table1.DBSession.AddPassWord('Your PassWord'); 
      Table1.Open;    
    //************************************************* @@@@@@摘自Delphi猛料包·········
      

  2.   

    Build
      [Error] Unit1.pas(30): Undeclared identifier: 'CRTblDesc'
      [Error] Unit1.pas(31): Undeclared identifier: 'hDBIDb'
      [Error] Unit1.pas(45): Undeclared identifier: 'szTblName'
      [Error] Unit1.pas(47): Undeclared identifier: 'szTblType'
      [Error] Unit1.pas(47): Undeclared identifier: 'szPARADOX'
      [Error] Unit1.pas(49): Undeclared identifier: 'szPassword'
      [Error] Unit1.pas(52): Undeclared identifier: 'bProtected'
      [Error] Unit1.pas(56): Undeclared identifier: 'DbiGetObjFromObj'
      [Error] Unit1.pas(56): Undeclared identifier: 'hDBIObj'
      [Error] Unit1.pas(56): Undeclared identifier: 'objDATABASE'
      [Error] Unit1.pas(60): Undeclared identifier: 'DbiDoRestructure'
      [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
      

  3.   

    uses BDE;
    所有的BDE的函数、类型和常量都在BDE单元中定义。上面那个函数直接调用了BDE的API,要引用BDE单元
      

  4.   

    我用的正巧是你说的。
    在表单上放两个edit。
    确定代码如下。
    if (Edit1->Text==Edit2->Text&&Edit1->Text!="")
    {
    Session->AddPassword("xxxx");//xxxx就是你的数据库的密码
    Table1->Active=true;
        Table1->Edit();
    Table1C1->AsString=Edit1->Text;
        Table1->Post();
        Close();
        }else ShowMessage("您两次输入的新密码不一致,请从新输入。");
    }