Скачать Усовершенствованый TResourceFile

13.03.1997
Скачать файл (4,38 Кб)

{   Last modified: 23/01/96                                                   }
{                                                                             }
{                     *******************************                         }
{                     *      Ruslan Bondarenko      *                         }
{                     *******************************                         }
{                     *      My Pascal Library      *                         }
{                     *            (BPL)            *                         }
{                     *          CopyRight          *                         }
{                     *  Dniepr, 2:464/39@fidonet   *                         }
{                     *                             *                         }
{                     *           1995-96           *                         }
{                     *******************************                         }

Это усовершенствованый TResourceFile из стандартного модуля Objects.pas Как известно TResourceFile имеет один существенный недостаток, при записи в ресурс нового обьекта затирается каталог обьектов и если по каким либо причинам не вызван метод Flush (отключение питания, RunError), то ресурс можно считать потеряным.

Поле Page можно изменять "на ходу".

+ TObjectBase может работать в сети (к одному ресурсу могут обращаться несколько программ как в режиме чтения так и записи) Для этого надо вызвать метод Lock, произвести необходимые действия с ресурсом, а затем UnLock. При вызове Lock необходимо проверять поле ErrorInfo, т.к. ресурс может быть заблокирован другим приложением

-- Пример 1 -------------------------------------

with DB^ do
  begin
    Lock;
    if ErrorInfo = 0 then 
     begin
      Put(New(PNewObject, Init))
      Unlock;
     end  
     else Reset;
  end;

+ В TObjectBase добавлен метод SearchKey

-- Пример 2 -------------------------------------

var SearchVar: TSearchMode;
      MyObject: TMyObject;
  begin
    with DB^ do
    begin
      SearchVar := mSearchFirst;
      I := SearchKey('My Object', SearchVar);
      while I <> 0 do
      begin
        SearchVar := mSearchNext;
        MyObject := TMyObject(Get(I));
        I := SearchKey('My Object', SearchVar);
      end;
    end;
  end;

+ Возможность работы под Dos/DPMI/Win

* Вся остальная работа c TObjectBase соответствует TResourceFile