Секционное хранилище
Секционное хранилище хранит данные в кусочно-линейном буфере состоящем из участков одинакового размера. Хранилище не требует указания максимальной емкости, но взамен не позволяет обращаться к элементам как к массиву данных.
Block - список указателей на блоки, из которых состоит хранилище.
BlockSize - размер блоков, измеряемый в числе хранимых элементов.
Create - конструктор, в котором необходимо указать размер хранимого элемента в байтах и размер блока хранения.
Code: |
// TSectionStorage // Секционное хранилище type TSectionStorage = class(TBaseStorage) public property Blocks: TList read FBlocks; property BlockSize: Cardinal read FBlockSize; public procedure Clear; override; procedure AddItems(Items: Pointer; Count: Cardinal); override; procedure SetItems(Items: Pointer; Index, Count: Cardinal); override; procedure GetItems(Items: Pointer; Index, Count: Cardinal); override; procedure SaveStream(Stream: TStream; Compression: Integer); override; procedure LoadStream(Stream: TStream; Compression: Integer; Count: Cardinal); override; public constructor Create(AItemSize: Cardinal; ABlockSize: Cardinal); destructor Destroy; override; end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!