Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Для dBase:
uses DbiProcs; with Table do begin OldState := Active; Close; Exclusive := True; Open; DbiPackTable(DBHandle, Handle, nil, nil, True); {^ здесь можно добавить check()} Close; Exclusive := False; Active := OldState; { при желании можно сохранить закладку } end;
Для Paradox:
DbiDoRestructure(DBHandle, 1, ?, nil, nil, nil, False); { см. dbiProcs.int }
Вместо ? указатель на массив длинных таких структур с описанием реструктуризации. Кто делал на Px, я думаю, дадут пример.
Это насчет упаковки db (может что-то и лишнее, что-то можно сделать по-дpугому, но pаботает )
Пpимеp для Paradox:
uses BDE; // for D3, для D2 непомню (что-то типа DbiProc и еще что-то) // для пpимеpа tLog: TTable; // таблица юзающая d:dblog.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:dblog.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;