Проверьте работу приведенной ниже функции, она пакует таблицы Paradox и dBase (требуется компонент TDatabase, указывающий на ту же директорию, где хранятся таблицы):
uses BDE; function PackTable(tbl:TTable; db:TDatabase): DBIResult; var crtd: CRTblDesc; begin Result := DBIERR_NA; with tbl do if Active then Active := False; with db do if not Connected then Connected := True; FillChar(crtd,SizeOf(CRTblDesc), 0); StrPCopy(crtd.szTblName, tbl.TableName); crtd.bPack := True; Result := DbiDoRestructure(db.Handle, 1, @crtd, nil, nil, nil, FALSE); end;Пример использования:
procedure TForm1.Button1Click(Sender: TObject); begin if PackTable(Table1, DataBase1) = DBIERR_NONE then ... else MessageBeep(0); end;