unit Unit2;
interface
uses
BDE, SysUtils, DBTables, Windows;
function TablePasswort(
var table: TTable; password:
String) : Boolean;
implementation
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;
end.