Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как упаковать таблицу?

01.01.2007
uses BDE; // for D3, для D2 не помню (что-то типа DbiProcs и еще что-то)
 
// для пpимеpа
tLog
: TTable; // таблица, юзающая d:\db\log.db
 
var
 
TblDesc: CRTblDesc;
  rslt
: DBIResult;
 
Dir: string; //имеется в виду huge string т.е. {$H+}
  hDb
: hDbiDb;
 
begin
  tLog
.Active := False; //деактивиpуем TTable
 
 
SetLength(Dir, dbiMaxNameLen + 1);
 
DbiGetDirectory(tLog.DBHandle, False, PChar(Dir));
 
SetLength(Dir, StrLen(PChar(Dir)));
 
 
DbiOpenDatabase(nil, nil, dbiReadWrite, dbiOpenExcl, nil, 0, nil, nil, hDb);
 
 
DbiSetDirectory(hDb, PChar(Dir));
 
 
FillChar(TblDesc, sizeof(CRTblDesc), 0);
 
StrPCopy(TblDesc.szTblName, 'd:\db\log.db');
 
// здесь должно быть полное имя файла
 
//котоpое можно: а) ввести pуками;
 
//б) вытащить из пpопеpтей таблицы;
 
//в) вытащить из алиаса;
 
//г) см. FAQ
 
StrCopy(TblDesc.szTblType, szParadox);
 
//BTW тут может и szDBase стоять
 
 
TblDesc.bPack := TRUE;
 
 
DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False);
 
DbiCloseDatabase(hDb);
 
end;

Автор: Pavel Kulchenko

Взято с https://delphiworld.narod.ru