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

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

Запаковать надо файл


Страницы:   1 2

Человек ©   (2007-08-29 09:58:00) 

Есть база данных. Надо бы её как-то запаковать, а при работе проги распаковывать и работать с ней. Подскажите, как это сделать?


alshtam   (2007-08-29 10:00:00) [21]

статья из "Delphi Worl 6" сам не проверял
{ **** 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);


Страницы:   1 2

Наверх

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