Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

"Упаковка" таблицы [D6, dBase, FoxPro]


Artem03 ©   (2004-05-07 14:50:00) 

Подскажите команду для "упаковки" (ФИЗИЧЕСКОГО удаления помеченных как "удаленные" записей) таблицы. 5 лет тому назад я ей пользовался. Сейчас опять возникла необходимость.
Спасибо.


Pul   (2004-05-07 16:59:00) [1]

procedure PackTable(Table: TTable);
var
 Props: CURProps;
 hDb: hDBIDb;
 TableDesc: CRTblDesc;
begin
 if not Table.Active then
 begin
   Application.MessageBox(PChar('Table Must Be Opened For Pack'),
     PChar('Error'), MB_ICONERROR);
   Exit;
 end;
 if not Table.Exclusive then
 begin
   Application.MessageBox(PChar('Table Must Be Opened Exclusive Mode'),
     PChar('Error'), MB_ICONERROR);
   Exit;
 end;
 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));
   Table.Open;
 end
 else
 if Props.szTableType = szDBASE then
 begin
{    Table.Close;}
   Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True));
{    Table.Open;}
 end
 else
 begin
   Application.MessageBox(PChar('Table Not Paradox Or DBase'),
     PChar('Error'), MB_ICONERROR);
   Exit;
 end;
end;


sniknik   (2004-05-07 14:58:00) [2]

PACK TABLE Table1 (если поддерживается тем что используеш)
DbiPackTable (если используеш то о чем не сказал)


Наверх

Титульная страница Поиск, карта сайта Написать письмо