Использование TgdcStreamSaver
Материал из GedeminWiki
Версия от 17:39, 27 августа 2013; SYSDBA (обсуждение | вклад)
Сохранение в поток
При сохранении в поток в цикле идет добавление произвольного количества объектов произвольного типа (в том числе - одновременно разных типов), последующее сохранение накопленной информации в переданный поток.
sub SaveRecordsToStream(gdcObject) dim Creator, StreamSaver, FileStream set Creator = new TCreator ' Создание файлового потока, &HFFFF - создать, или перезаписать файл set FileStream = Creator.GetObject(Array("d:\stream.dat", &HFFFF), "TFileStream", "") set StreamSaver = Creator.GetObject(nil, "TgdcStreamSaver", "") StreamSaver.Silent = True ' не выводить лог и сообщения gdcObject.First while not gdcObject.Eof call StreamSaver.AddObject(gdcObject, false) ' второй параметр отвечает за сохранение детальных объектов (false - не сохранять) gdcObject.Next wend StreamSaver.StreamFormat = "sttXML" ' (sttBinaryNew | sttXML) call StreamSaver.SaveToStream(FileStream) end sub
Загрузка из потока
При загрузке информации из потока нет нужды предоставлять какой-либо бизнес-объект, то есть из любого места и любой формы можно загрузить информацию о любых объектах.
sub LoadRecordsFromStream dim Creator, StreamSaver, FileStream set Creator = new TCreator ' Создание файлового потока, &H0 - открыть только для чтения set FileStream = Creator.GetObject(Array("d:\stream.dat", &H0), "TFileStream", "") set StreamSaver = Creator.GetObject(nil, "TgdcStreamSaver", "") StreamSaver.Silent = False ' выводить лог и сообщения StreamSaver.ReplaceRecordAnswer = mrYesToAll ' по умолчанию заменять все объекты call StreamSaver.LoadFromStream(FileStream) end sub