Paradox Password Changing/adding

procedure fDbiChgPassw(Tbl: TTable; password: string);
var
  hDb: hDbiDb;
  TblDesc: CRTblDesc;
  Dir: String;
  OpType: CROpType;

begin
  SetLength(Dir, dbiMaxNameLen + 1);
  Check(DbiGetDirectory(Tbl.DBHandle, False, PChar(Dir)));
  SetLength(Dir, StrLen(PChar(Dir)));
  try
    FillChar(TblDesc, sizeof(CRTblDesc), #0);

    Tbl.DisableControls;
    Tbl.Close;
    Check(DbiOpenDatabase(nil, nil, dbiReadWrite, dbiOpenExcl, nil, 0,
nil, nil, hDb));
    Check(DbiSetDirectory(hDb, PChar(Dir)));
    StrPCopy(TblDesc.szPassword, password);
    TblDesc.bProtected := true;
    OpType := crADD;            //if u wanna change the password use
crMODIFY here
    TblDesc.pecrSecOp := @OpType;

    StrPCopy(TblDesc.szTblName, Tbl.TableName);
    StrCopy(TblDesc.szTblType, szParadox);
    Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));
  finally
    Check(DbiCloseDatabase(hDb));
    Tbl.EnableControls;
    Tbl.Open;
  end;
end;