下面给出的函数 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;