Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Упаковка таблиц Paradox и dBase

Автор: Александр
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Упаковка таблиц Paradox & dBase

Процедура упаковки таблиц Paradox & dBase.
В процедуру передается TTable c любым состоянием свойства Active.
Состояние Active после выполнения процедуры остается предыдущим.
Процедура предусматривает отключение всех визуальных DbControls,
с последующим их подключением.

Зависимости: Bde, Db, DbTables
Автор:       Александр, dbwork@kor.kes.ru, Кореновск
Copyright:   Из исходного кода Database Workshop 4.12 (c)2002 Degisy Software
Дата:        23 мая 2002 г.
***************************************************** }

procedure Bde_PackTable(DataSet: TDataSet);
var
  hDb: hDBIDb;
  Tbl: TTable;
  Props: CURProps;
  CrDesc: CRTblDesc;
  Save: Boolean;
begin
  if (DataSet is TTable) then
  begin
    Tbl := TTable(DataSet);
    Save := Tbl.Active;
    Tbl.Active := True;
    try
      Check(DbiGetCursorProps(Tbl.Handle, Props));
      if (Props.szTableType = szPARADOX) then
      begin
        FillChar(CrDesc, SizeOf(CRTblDesc), 0);
        StrCopy(CrDesc.szTblName, Props.szName);
        StrCopy(CrDesc.szTblType, Props.szTableType);
        CrDesc.bPack := True;
        Check(DbiGetObjFromObj(hDBIObj(Tbl.Handle), objDATABASE, hDBIObj(hDb)));
        Tbl.DisableControls;
        Tbl.Active := False;
        Check(DbiDoRestructure(hDb, 1, @CrDesc, nil, nil, nil, False));
      end
      else if (Props.szTableType = szDBASE) then
      begin
        Tbl.Active := True;
        Check(DbiPackTable(Tbl.DBHandle, Tbl.Handle, nil, szDBASE, True));
      end;
    finally
      Tbl.Active := Save;
      Tbl.EnableControls;
    end;
  end;
end;

Пример использования:

Bde_PackTable(Table1); 
Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay