Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Турбо Вижн    >>    obase
   
 
 Усовершенствованый TResourceFile   Руслан Бондаренко 13.03.1997

Это усовершенствованый TResourceFile из стандартного модуля Objects.pas:
 предотвращает затирание объекта
 может работать в сети с возможностью блокировок
 работает под Dos/DPMI/Win
Вся остальная работа c TObjectBase соответствует TResourceFile



4k 
 

From rb Thu Mar 13 17:48:41 1997 From: rb@lucie.gf.unity.net (Ruslan Bondarenko) To: vot@infolink.tver.su Subject: OBase for Russian SWAG Date: Thu, 13 Mar 1997 14:01:29 GMT Organization: Private Привет Валерий! Я тут для русского swag'а предложить кое-чего хочу. Если включишь OBase.pas в сваг - черкни мне в какой С уважением, Руслан { 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), то ресурс можно считать потеряным. ! TObjectBase при добавлении нового обьекта проверяет возможность затирания каталога, при необходимости делает Flush, отражает это ресурсе, а уж потом только записывает сам обьект. Вам вызывать метод Flush не обязательно. В вызове коструктора Init дополнитель задается параметр sPage - это размер страницы для размещения новых обьектов. Чем больше sPage, тем реже будет производиться обновление каталога в ресурсе и быстрее будет работать программа при записи обьектов. Поле 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 }