Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 октября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Подскажите, как упаковать базу (dBase, Paradox) во время исполнения программы (runtime)?

Для 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;


Pavel Kulchenko

(2:465/66)

--------------------------------------------------------------------------------

Пpимеp для Paradox:

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;

// можно еще чеки ввести, но облом :-)

Robert Gluvchinskiy
(2:463/102.108)



<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS