Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
16 / 16 / 10
Регистрация: 23.09.2014
Сообщений: 136

Сериализация структуры и пошаговое считывания данных из файла

14.05.2015, 16:23. Показов 2104. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!!!
Проблема следующая: есть класс метод которого генерирует большое количество данных с последующей записью в структуру. Она после каждого шага цикла должна записываться в файл "*.xml" (тот самый што предыдущая).
Также нужно организовать пошаговое считывания этих данных из файла.
Пробовал что-то писать:
Структура:
C#
1
2
3
4
5
6
public struct B
    {
        public Vector3 B_vect;
        public double B_abs;
        public Vector3 XYZ;
    }
Часть метода записи с циклом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (int x = (int)UP_Limit[0] + 1; x <= (int)HIGH_Limit[0]; x++)
            {
                for (int y = (int)UP_Limit[1] + 1; y <= (int)HIGH_Limit[1]; y++)
                {
                    for (int z = (int)UP_Limit[2] + 1; z <= (int)HIGH_Limit[2]; z++)
                    {
                        B Bl = new B();
                        Bl.XYZ = new Vector3(x, y, x);
                        Bl.B_vect = new Vector3(One_Point(Bl.XYZ));
                        Bl.B_abs = lenght(Bl.B_vect);
                        formatter.Serialize(stream, Bl);
                        context.Send(OnProgressReport_X, 1 + 100 * (z - 1) / c);
                       }
                 }
           }
Что получается (файл не полностью и даже не полностью сериализация структуры):
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?xml version="1.0" encoding="utf-8"?>
<B xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <B_vect>
    <X>-195.261932</X>
    <Y>-76.62393</Y>
    <Z>271.885864</Z>
  </B_vect>
  <B_abs>343.39535866804488</B_abs>
  <XYZ>
    <X>1</X>
    <Y>1</Y>
    <Z>1</Z>
  </XYZ>
</B><?xml version="1.0" encoding="utf-8"?>
<B xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <B_vect>
    <X>-195.261932</X>
    <Y>-76.62393</Y>
    <Z>271.885864</Z>
  </B_vect>
  <B_abs>343.39535866804488</B_abs>
  <XYZ>
    <X>1</X>
    <Y>1</Y>
    <Z>1</Z>
  </XYZ>
</B><?xml version="1.0" encoding="utf-8"?>
<B xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <B_vect>
    <X>-195.261932</X>
    <Y>-76.62393</Y>
    <Z>271.885864</Z>
  </B_vect>
  <B_abs>343.39535866804488</B_abs>
  <XYZ>
    <X>1</X>
    <Y>1</Y>
    <Z>1</Z>
  </XYZ>
</B><?xml version="1.0" encoding="utf-8"?>
<B xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <B_vect>
    <X>-195.261932</X>
    <Y>-76.62393</Y>
    <Z>271.885864</Z>
  </B_vect>
  <B_abs>343.39535866804488</B_abs>
  <XYZ>
    <X>1</X>
    <Y>1</Y>
    <Z>1</Z>
  </XYZ>
</B><?xml version="1.0" encoding="utf-8"?>
<B xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <B_vect>
    <X>-195.261932</X>
    <Y>-76.62393</Y>
    <Z>271.885864</Z>
  </B_vect>
  <B_abs>343.39535866804488</B_abs>
  <XYZ>
    <X>1</X>
    <Y>1</Y>
    <Z>1</Z>
  </XYZ>

Метод десериализации(Не может десериализувать структуру):
C#
1
2
3
4
5
6
B Bl;
            using (FileStream fs = new FileStream(file+".xml", FileMode.OpenOrCreate))
            {
                Bl = (B)formatter.Deserialize(fs);
            }
            return Bl;
Как мне организовать сериализацию структуры с пошаговою записью ее в файл.
Заранее благодарю !!!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2015, 16:23
Ответы с готовыми решениями:

В какой тип данных переводить из wav-файла раздел data после считывания байтов
Добрый вечер, суть вопроса: 1) Что получает на вход БПФ и что выдает ( в каком формате ), иными словами: какие типы данных брать ? 2) В...

Удаление элемента структуры для правильного считывания WAV-файла
Господа, возник такой вопрос: Мне необходимо удалить элемент структуры. Это необходимо для правильного считывания WAV-файла, не...

По поводу считывания из html файла данных
Точнее вопрос не в самом считывании, а в том как этот файл достать из браузера? Пишу в codeblocks на с++. Есть ли для с++ библиотеки для...

5
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 4
14.05.2015, 16:40
засунь структуру в массив и сериализуй массив
или
упакуй структуру сериализуй =>десериализуй =>распакуй структуру.
0
16 / 16 / 10
Регистрация: 23.09.2014
Сообщений: 136
14.05.2015, 17:24  [ТС]
Цитата Сообщение от aslan125 Посмотреть сообщение
засунь структуру в массив и сериализуй массив
или
упакуй структуру сериализуй =>десериализуй =>распакуй структуру.
Массив структур не влезает в память !!!
Поэтому было решено сразу писать на винчестер.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
14.05.2015, 18:56
Лучший ответ Сообщение было отмечено Neptyn как решение

Решение

Neptyn, могу предложить велосипед. Примерно в таком духе...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.IO;
using System.Xml.Linq;
 
namespace ConsoleApplication2 {
    class Program {
        static void Main(string[] args) {
            List<STR> strs = new List<STR>();
            Random r = new Random();
            for (int i = 0; i < 10; i++) {
                strs.Add(new STR { X = (100 * r.NextDouble()), Y = (200 * r.NextDouble()) });
            }
            using (Stream fs = new FileStream(@"C:\123.xml", FileMode.Append, FileAccess.Write)) {
                using (StreamWriter sw = new StreamWriter(fs)) {
                    foreach (var s in strs) {
                        sw.Write(string.Format("{0}\n",s.ToString()));
                    }
                }
            }            
            Console.ReadLine();
        }
    }
    struct STR {
        public double X;
        public double Y;
 
        public override string ToString() {
            XDocument doc=new XDocument(new XElement("STR",
                new XElement("X", X),
                new XElement("Y", Y)));
            return doc.ToString();
        }
    }
}
1
16 / 16 / 10
Регистрация: 23.09.2014
Сообщений: 136
14.05.2015, 19:08  [ТС]
insite2012, Большое Вам Спасибо!!!
Только есть вопрос: Как потом это считывать?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
14.05.2015, 19:13
Цитата Сообщение от Neptyn Посмотреть сообщение
есть вопрос: Как потом это считывать?
Ну это просто пример, доведите его до ума. Сам принцип прост - переопределяем ToString() у структуры, чтобы формировать корректный Xml элемент.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.05.2015, 19:13
Помогаю со студенческими работами здесь

Не работает цикл считывания данных из файла
Создал программу которая должна считывать 25 чисел из 1 файла , и во время считывания записивать их в массив,а после найти суму...

Реализовать функцию считывания данных массива с файла
Добрый вечер. Замотали меня на паре. Нужно переделать код... #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

WinCC. Скрипт считывания данных из файла Data.db
Добрый день. Возникла проблема считывания данных из файла Data.db. Вот скрипт. #include &quot;apdefap.h&quot; int gscAction( void...

Макрос assert() для считывания данных из файла из указанного диапазона
Нужно считать даные из текстового файла и определить сколько есть чисел, букв, пробелов и т.д. Это всё я сделал. Но как использовать...

Функция считывания данных из файла: прошу совет по оптимизации кода
Код работает, но изящным его назвать очень тяжело. Прошу советов по сокращению и оптимизации (пример того как файл выглядит прикрепляю) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru