TgsMMFStream (постановка)

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Формат потока)
Строка 28: Строка 28:
 
=== Формат потока ===
 
=== Формат потока ===
  
Поток состоит из заголовка и данных. Заголовок содержит информацию о полях и о количестве записей. Данные -- непрерывный поток с данными всех записей. Разделителей между записями нет. Т.е. окончание записи находится там, где оканчиваются данные последнего поля в списке. Если прочитано записей меньше, чем находится в заголовке, то выдается исключение.
+
Поток состоит из заголовка и данных. Заголовок содержит:
 +
# информацию о версии структуры потока,
 +
# список полей,
 +
# количество записей.  
 +
Данные -- непрерывный поток с данными всех записей. Разделителей между записями нет. Т.е. окончание записи находится там, где оканчиваются данные последнего поля в списке. При считывании из потока, если прочитано записей меньше, чем находится в заголовке, то выдается исключение. Если в процессе считывания записи данные не соответствуют типу поля, то выдается исключение. Например, считалась отрицательная длина строки.
  
 
=== См. также ===
 
=== См. также ===

Версия 15:25, 24 октября 2008

Вспомогательный класс для механизма сохранения в поток. Предназначен для замены TClientDataSet. Использует отображаемые в память файлы для хранения объемов данных, превышающих размер доступной оперативной памяти. Может работать в двух режимах: записи и считывания.

Содержание

Режим записи

  1. Создание объекта
  2. AddFieldDef для каждого поля
  3. Цикл для каждой записи:
    1. SetFromDataSetField для каждого поля
    2. Post
  4. SaveToStream
  5. Уничтожение объекта

Режим чтения

  1. Создание объекта
  2. LoadFromStream
  3. Цикл для каждой записи:
    1. SetDataSetField для каждого поля
    2. Next
  4. Уничтожение объекта

Свойства

RecordCount 
количество записей. Только для чтения.
CurrentRecord 
номер текущей записи. Только для чтения.
EOF 
Только для чтения.

Формат потока

Поток состоит из заголовка и данных. Заголовок содержит:

  1. информацию о версии структуры потока,
  2. список полей,
  3. количество записей.

Данные -- непрерывный поток с данными всех записей. Разделителей между записями нет. Т.е. окончание записи находится там, где оканчиваются данные последнего поля в списке. При считывании из потока, если прочитано записей меньше, чем находится в заголовке, то выдается исключение. Если в процессе считывания записи данные не соответствуют типу поля, то выдается исключение. Например, считалась отрицательная длина строки.

См. также

Managing Memory-Mapped Files in Win32

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты