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

Previous  Top  Next

    
 

 

 

Code:

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

©Drkb::02951

       

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