Класс CmaStream переопределяет операторы потокового ввода/вывода, чтобы сократить код сохранения данных
Свойства и функции класса TmaStream


constructor Create(const name:wideString;mode:cardinal)
Создает поток, связяный с файлом с именем name. При этом файл остается закрытым до вызова функции Open, но автоматически открывается перед каждой операцией ввода-вывода и закрывается после нее.

Параметры:

name имя открываемого файла
mode режим открытия и формат файла (см. файловые константы ).

constructor Create(stream:ImaStream)
Присоединение класса к уже существующему интерфейсу.


constructor Create(cell:TmaCell)
Присоединение к потоку, хранящемуся в ячейке cell. Если в ячейке нет потока, то объект не создается.


property Options:maStreamOptions
Свойство позволяет получать и устанавливать опции ввода-вывода.
procedure PushOptions(opt:maStreamOptions)
Функция сохраняет текущие опции ввода-вывода во внутреннем стеке и затем заменяет текущие опции на opt.

Параметры:

opt новые опции ввода-вывода

procedure PopOptions
Функция восстанавливает предыдущие опции ввода-вывода.
procedure Open
Открывает поток. После вызова Open поток не будет закрываться после каждой операции ввода-вывода до вызова Close.
procedure Close
Закрывает поток.После этоого файл автоматически открывается перед каждой операцией ввода-вывода и закрывается после нее.
procedure Flush
Сбрасывает файловые буфера. Имеет смысл только для открытого потока.


procedure newLine
Функция записывает разделитель строк в поток. Что именно будет записано в поток, определяется опциями ввода-вывода. Если поток не текстовый, то вызовы игнорируются.
procedure newField
Функция записывает в поток разделитель полей. Что именно будет записано в поток, определяется опциями ввода-вывода. Если поток не текстовый, то вызовы игнорируются.
procedure WriteLong(value:integer)
procedure WriteDouble(value:double)
procedure WriteStr(value: WideString)
Процедуры выводят простое значение в текстовый поток. Формат вывода задается опциями потока. Если поток не открыт, то он открывается, и по завершении вывода закрывается.

Параметры:

value записываемое значение

function  ReadLong:Integer
function  ReadDouble:Double
function  ReadStr:WideString
Функции считывают простое значение из текстового потока. Если поток не открыт, то он открывается, и по завершении ввода закрывается. Функция ReadStr выделяет память под строку сама.
procedure WriteBlock (var ptr;length: integer)
Функция записывает блок данных заданной длины. Только для бинарных потоков. Если поток не открыт, то он открывается, и по завершении ввода/вывода закрывается.

Параметры:

ptr указатель на записываемые данные
length длина записываемых данных

procedure ReadBlock(var ptr;length: integer)
Функция счикывает блок данных заданной длины. Только для бинарных потоков. Если поток не открыт, то он открывается, и по завершении ввода/вывода закрывается.

Параметры:

ptr указатель на считываемые данные
length длина считываемых данных

function Write(Value: TmaComponent): HResult
Функция записи компонента любого типа. Если поток не открыт, то он открывается, и по завершении ввода/вывода закрывается.

Параметры:

comp указатель на компонент

Возвращаемое значение:

MA_NOERROR при отсутствии ошибок
MA_ERR_BAD_PARAM если comp==NULL
MA_ERR_IOPERM если запись в поток запрещена
MA_ERR_NOINTERFACE если компонент не имеет интерфейса ImaSupportsStreaming
function Read: ImaComponent 
Функции чтения компонента. Создается и возвращается компонент с CLSID, считанным из потока.
Если поток не открыт, то он открывается, и по завершении ввода/вывода закрывается.

Возвращаемое значение:

Указатель на считываемый компонент

function ReadCell: TmaCell
function ReadMatrix: TmaMatrix
function ReadList: TmaList
function ReadSparseMatrix: TmaSparseMatrix
Функции чтения компонентов из потока. При вызове функции очередной компонент считывается из потока и создается. Если очередной компонент в потоке имеет тип, не совпадающий с типом возвращаемого класса-оболочки, то считанный объект уничтожается и возвращается класс-оболочка с пустым указателем на интерфейс.
procedure Read(var val: TmaCell)
procedure Read(var val: TmaMatrix)
procedure Read(var val: TmaList)
procedure Read(var val: TmaSparseMatrix)
Функции чтения компонентов из потока. При вызове функции считывается из потока уже существующий компонент. При ошибке считывания возвращается класс-оболочка с пустым указателем на интерфейс.