Beispiel #1
0
        public void Переписать(АМОбъект примитив, int адрес)    // существует опасность перекрытия данных
        {
            Писатель.BaseStream.Position = адрес;

            примитив.СохранисьВ(Писатель.BaseStream);

            Писатель.BaseStream.Position = адресСчетчика;
            СчетчикОбъетов++;
            Писатель.Write(СчетчикОбъетов);
        }
Beispiel #2
0
        // можно создать разреженный объект поток и распихать его в дыры
        public MemoryStream ЗаписатьВВиртуальныйПоток(АМОбъект примитив)  //
        {
            var виртПоток = new MemoryStream();
            var писатель  = new BinaryWriter(виртПоток);
            var кодТипа   = Хранилище.кодыТипов[примитив.GetType()];

            писатель.Write(кодТипа);
            примитив.СохранисьВ(Писатель);

            return(виртПоток);
        }
Beispiel #3
0
        public void ДобавитьИСохранить(АМОбъект примитивИлиАдрес)    // в конец
        {
            Память.Add(примитивИлиАдрес);

            Писатель.Seek(0, SeekOrigin.End);

            var кодТипа = кодыТипов[примитивИлиАдрес.GetType()];

            Писатель.Write(кодТипа);
            примитивИлиАдрес.СохранисьВ(Писатель);

            длинаФайла = (int)Писатель.BaseStream.Position;  // = + длинаАдреса + длина списка
        }
Beispiel #4
0
 public void ПередайСообщениеВПоток(АМОбъект сообщение)
 {
     сообщение.СохранисьВ(поток);
 }