// как его использовать
        public static void Тест()
        {
            var адресДХ = Хранилище.Добавить(new ДисковоеХранилище()
            {
                ИмяФайла = "имя"
            });                                                                            // теперь Дисковое хранилище может восстанавливается открываться
            var хр = ((ДисковоеХранилище)адресДХ.АдресВКуче());

            хр.Открыть();

            var д = new ДисковоеХранилище()
            {
                ИмяФайла = "дисковое хранилище"
            };

            д.Создать();
            var адресЦелого = д.ДобавитьВКонец(new ЦелоеЧисло()
            {
                Значение = 10
            });
            var целое        = д.ПрочитатьОбъект(адресЦелого.НомерВФайле);
            var адресСтроки2 = д.ДобавитьВКонец(new Строка()
            {
                Значение = "с"
            });
            var строкаПрочитнная = д.ПрочитатьОбъект(адресСтроки2.НомерВФайле);
            var адресСтроки3     = д.ДобавитьВКонец(new Строка()
            {
                Значение = "Строка"
            });

            var адресСтроки = хр.ДобавитьВКонец(new Строка()
            {
                Значение = "строка на диске"
            });                                                                                // строка не добавляется в Память, только на Диск


            Хранилище.Добавить(адресСтроки); // теперь можно по адресу добраться до самой строки

            //примитивы должны сохраняться вместе с адресом,иначе они будут потеряны, Дисковое хранилище можно полностью прочитать, последовательно и просмотреть все объекты
            // важна замена объекта по адресу, либо перезапись, либо перенаправление. Перезапись предполагает резервирование дополнительного места (байтов), перенаправление, должно содержать
            //новый адрес, который должен уместиться в старое пространство, т.е. строка не может быть меньше 4 байт(минимального адреса)



            var копияСтрокиВПамяти = адресСтроки.АдресВКуче();

            // теперь добавим адрес строки на диск
            var адресАдресаСтроки = хр.ДобавитьВКонец(адресСтроки); // теперь по этому адресу храниться (1.номер ДХ  в Хранилище и 2.номер строки в ДХ) 1 здеь лишниее
            //похоже адрес в файле не должен содержать адреса ДХ в хранилище- это уже
        }
Ejemplo n.º 2
0
 public override ПримитивИлиАдрес АдресВКуче()
 {
     if (АдресГруппыВкуче == null)
     {
         АдресГруппыВкуче = (ДисковоеХранилище)СобственныйАдресПримитива.АдресВКуче();
     }
     return(АдресГруппыВкуче.ПрочитатьОбъект(НомерВФайле));
 }