Chcę spakować tabele typu Paradox w sposób programowy, mam dwa kody źródłowe, które nie wiem dlaczego u mnie nie działają (mam Delphi 6 Enterprise). Oto te kody. Jeśli ktoś może mi pomóc to z góry wielkie dzięki.

To kod z tego forum:
[code]function PackParadoxTable(Table: TTable): boolean;

var

td: CRTblDesc;

Database: TDatabase;

begin

Result := True;

try

Database := Table.Database;

if Table.Active then Table.Close;

if not Database.Connected then Database.Connected := True;

Result := DBIERR_NA;

FillChar(td, SizeOf(td), 0);

StrPCopy(td.szTblName, Table.TableName);

td.bPack := True;

if DbiDoRestructure(Database.Handle, 1, @td, nil, nil, nil, False) <> DBIERR_NONE then

  Result := False;

except

Result := False;

end;

end;

A to kod ze strony Borlanda:
[code]PackTable(Table: TTable);
var

Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;

begin

Check(DbiGetCursorProps(Table.Handle, Props));
if Props.szTableType = szPARADOX then
begin

FillChar(TableDesc, sizeof(TableDesc), 0);
Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
StrPCopy(TableDesc.szTblName, Table.TableName);
StrPCopy(TableDesc.szTblType, Props.szTableType);
TableDesc.bPack := True;
Table.Close;
Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, FALSE));

end
else

if Props.szTableType = szDBASE then
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, TRUE));

Table.Open;