Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.06.2023
Сообщений: 6

Проблема с сериализацией (записать объект класса в файл)

09.06.2023, 14:56. Показов 789. Ответов 12

Студворк — интернет-сервис помощи студентам
При разработке функции в приложение(WinForms) произошла проблема записи в файл. Мне нужно записать объект класса в файл, а для этого, как я понимаю, надо разрешить сериализацию класса(объекта). Попробовал написать перед определением класса атрибут [Serializable] и [SerializableAttribute], но вылетает ошибка, что атрибут не определен.
Код заголовочного файла с определением класса:
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
#pragma once
#include <iostream>
#include <fstream>
#include <string>
//using namespace System;
//using namespace System::Collections::Generic;
//[SerializableAttribute]
//[ SerializableAttribute ]
public ref class Ingredient {
public:
    //bool is_there_one; //показатель - если ли он в рецепте
    double amount_gr; // количество в граммах
    System::String^ name; // название ингредиента
    
    Ingredient() {
        //this->is_there_one = false;
        this->amount_gr = 0;
        this->name = "";
    }
    Ingredient(System::String^ name, double count) {
        this->name = name;
        this->amount_gr = count;
    }
    ~Ingredient() {}
};
//[SerializableAttribute]
ref class Recipe {
public:
    Recipe() {}
    Recipe(System::String^ name, System::String^ instruction) {
 
    }
    System::Collections::Generic::List<Ingredient^>^ Ing_List = gcnew System::Collections::Generic::List<Ingredient^>();
    System::String^ name;
    System::String^ instruction;
};
Код обработчика нажатия, чтобы записать объект в файл:
C++
1
2
3
4
5
6
7
8
9
private: System::Void button_OK_Click(System::Object^ sender, System::EventArgs^ e) {
        try {
            BinaryFormatter^ formatter = gcnew BinaryFormatter();
            FileStream^ stream = gcnew FileStream("test.bin", FileMode::OpenOrCreate);
            formatter->Serialize(stream, Current_Recipe);
            stream->Close();
        }
        catch (Exception^ e) { this->label_warning->Text = e->ToString(); }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.06.2023, 14:56
Ответы с готовыми решениями:

Записать объект класса в txt файл
Есть простой класс, надо объект данного класса записать в txt файл, а также создать объекта класса на основе этого файла (для проверки) ...

Как записать объект класса в файл?
Добрый день! Подскажите пожалуйста, объект класса можно целиком записать в файл? У меня выводится только что-то вроде По...

Проблема с сериализацией
Доброго времени суток форумчане, прошу помочь. Задача проста: есть 2 формы, главная (назовем её &quot;mainform&quot;, из которой...

12
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
09.06.2023, 17:57
Цитата Сообщение от c0cate Посмотреть сообщение
вылетает ошибка, что атрибут не определен.
Должно работать при условии, что using namespace System; не закоментирован.
0
0 / 0 / 0
Регистрация: 09.06.2023
Сообщений: 6
09.06.2023, 19:06  [ТС]
попробовал добавить вашу строку (using namespace System;), но теперь вылезает новая ошибка. также я убрал все System:: в коде ниже, запустил - ошибки. вернул на место - тоже
Миниатюры
Проблема с сериализацией (записать объект класса в файл)  
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
09.06.2023, 19:32
c0cate, можете архив с проектом выложить на форум?
0
0 / 0 / 0
Регистрация: 09.06.2023
Сообщений: 6
09.06.2023, 20:56  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
c0cate, можете архив с проектом выложить на форум?
не смогу, тк ограничения не дают мне этого сделать. максимальный размер - 25мб. у меня же почти 200 там
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
10.06.2023, 00:05
c0cate, архив 200 Мб или папка до архивирования? Если второе, то создайте архив и затем удалите из него лишнее - https://www.cyberforum.ru/blog... g4128.html
0
0 / 0 / 0
Регистрация: 09.06.2023
Сообщений: 6
10.06.2023, 01:17  [ТС]
1 - архив весит 198мб
2 - даже если выполнить все действия, там не будет подходящего размера
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
10.06.2023, 13:37
c0cate, интересно что у вас там такое сделано что даже архив весит 198 Мб. Давайте на Яндекс Диск тогда или любой другой файлообменник.

Цитата Сообщение от c0cate Посмотреть сообщение
в коде ниже, запустил - ошибки.
Это все ошибки? Покажите файл servprov.h для начала.
0
0 / 0 / 0
Регистрация: 17.02.2020
Сообщений: 1
10.06.2023, 19:54
проблема решена??? у меня такая же
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
10.06.2023, 20:45
Barimen, какая именно? Тоже SerializableAttribute не находит или что? Покажите свой код.
0
0 / 0 / 0
Регистрация: 09.06.2023
Сообщений: 6
10.06.2023, 21:24  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
c0cate, интересно что у вас там такое сделано что даже архив весит 198 Мб. Давайте на Яндекс Диск тогда или любой другой файлообменник.


Это все ошибки? Покажите файл servprov.h для начала.
https://disk.yandex.ru/d/kfV10UPqz9TbXA
Ссылка на яндекс диск с проектом, папка "Курсовая"
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18242 / 14156 / 5366
Регистрация: 17.03.2014
Сообщений: 28,846
Записей в блоге: 1
10.06.2023, 21:55
c0cate, вы намудрили с include-ами. В коде странная смесь Windows API заголовков, STL и .NET кода. Отсюда и проблема. К счастью она просто решается. Пишем атрибут с указанием полное имени не добавляя using namespace
C++
1
2
[System::SerializableAttribute]
public ref class Ingredient {
Цитата Сообщение от c0cate Посмотреть сообщение
даже если выполнить все действия, там не будет подходящего размера
Вы меня обманули. У вас в архиве папка .vs которая весит почти под 1 Гб в несжатом виде. Если бы удалили её, как я советовал в своем блоге, то архив с 192 Мб сразу бы стал весить всего 2.5 Мб. Если удалить остальные ненужные папки, то всего 40 Кб.
1
0 / 0 / 0
Регистрация: 09.06.2023
Сообщений: 6
11.06.2023, 00:23  [ТС]
Спасибо, помогло! И про обман, простите, я не знал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.06.2023, 00:23
Помогаю со студенческими работами здесь

Наследование класса из сериализацией
Добрый день. Суть проблемы такова: Есть у меня класс с сериализацией в Xml файл, и мне нужно наследовать его классом из еще одной...

Newtonsoft.Json Проблема с сериализацией
Здравствуйте! Делал запрос к своему Api используя restsharp. При запросе добавлял Header с json-строчкой. Сериализовал так: ...

Проблема с сериализацией и с десериализацией листа
Доброго времени суток у меня возникла такая вот проблема с сериализацией и с десериализацией листа Есть вот-такой код: using...

Записать данные из файла в объект класса
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;typeinfo.h&gt; using namespace std; const int LEN = 32; ...

Нужно записать объект класса TColor
Помогите пожалуйста решить задачу: нужно каким то образом записать цвет из ColorDialog1-&gt;Color в текстовый файл, а потом считать и...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru