![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Zero |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
У меня есть класс, который включает в себя структуру. И есть переменная типа того класса.
После определённых преобразований переменная заполняется значениями. Вопрос: возможно ли записать эту переменную в файл, и чтобы потом её можно было считать из файла, в идентификатор такого же типа. Вот пример класса:
Это сообщение отредактировал(а) Zero - 8.10.2005, 22:56 |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Можно |
|||
|
||||
| np9mi7 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 553 Регистрация: 17.8.2003 Где: Volgograd, Russia Репутация: 5 Всего: 10 |
Zero, посмотри по этой ссылкеhttp://forum.vingrad.ru/index.php?showtopic=65661, может поможет....
|
|||
|
||||
| Dr.Wisdom |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 6.1.2005 Репутация: нет Всего: 0 |
Если я правильно понял......
Если я правильно понял. --------------------
VIVA LA RESISTANCE |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Dr.Wisdom
Ну-ну... попробуй так "сериализовать" структуру, которую написал Zero. А потом считай то, что записал... На результаты полюбуемся. По сабжу: я бы рекомендовал курить Boost.Serialization, но я не помню, в каких она отношениях с Билдером. Скорее всего, в не очень хороших. Может, можно будет обойтись и своим велосипедом. В любом случае, вектор надо будет писать поэлементно. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| Zero |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
Блин, да я в английском "баклажан".
Да, но как я её считывать то буду??? Добавлено @ 19:02 Пардон, я структуру уже немного изменил:
|
||||||
|
|||||||
| np9mi7 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 553 Регистрация: 17.8.2003 Где: Volgograd, Russia Репутация: 5 Всего: 10 |
Void, товарищ не грубите новичкам....
Dr.Wisdom, просто необходимо корректо написать метод загрузки/выгрузки из (в) потока.
Это сообщение отредактировал(а) np9mi7 - 9.10.2005, 19:09 |
||||
|
|||||
| Zero |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
Ладно, если с векторами нельзя, а как насчёт того, если я их заменю на динамический массив, или это тоже проблемы записи +чтение не решит????
|
|||
|
||||
| Void |
|
||||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Ни в коем разе Dr.Wisdom
Не суть важно. Все равно, записать структуру как один непрерывный кусок памяти не получится. Поэтому, как пишет np9mi7, надо реализовать методы сохранения и загрузки. Примерная, не претендующая на корректность, реализация:
А вообще, раз Boost.Serialization нормально живет с BCB - лучше использовать ее. Геморрой снизится на порядок. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||
|
|||||||
| Zero |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
А это, чёто я не понял, это чё сохранение и загрузка файла, а путь где ставить то...
Енто почему??? А я у препода в субботу спрашивал, как записать класс как одно целое, этот баклажан сам незначет, начал загонять какието записи по символьно и т.п.(отмаз от ответа), короче потом сказал, что всё что можно сделать не делфи, можно как то и на С++... А на делфи, тама я 3 семестра назад курсач делал, точнее тогда это был паскаль, то всё равно работал с записями, то что в С++ называется структурой, и там всё можно было... По моему мнению, нельзя записывать только те вещи, которые являются не значениями, а дресами в памяти, т.е. адреса записывать естесно нет смысла, а если в структуре оставить только статические переменные то должно быть нормал. Вот только тут не получается обоётись без динамики... |
||||
|
|||||
| Void |
|
||||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Предположим, что наша структура уже реализует методы save и load. Тогда запись/чтение будут выглядеть примерно так:
Совершенно верно. Так вот, реализации std::string и std::vector среди прочего как раз и содержат эти адреса (указатели на свое реальное содержимое). Это сообщение отредактировал(а) Void - 9.10.2005, 20:34 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||
|
|||||||
| Zero |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
А-а-а... это ты функции-члены для структуры создал... Но сдесь не совсем всё просто, на самом деле эта структура, является всего лиш типом, для класса, который описан чуть ниже... Но я уже придумал "велосипед": Я создам функцию член, в ней, которая будет переписывать содержимое адресов, в тестовый файл, а потом его будет легко загрузить |
|||
|
||||
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
По такому же принципу можно сериализовать и содержимое класса TEST. Кто мешает?
Честно говоря, не совсем понял, что ты собираешься сделать... Но на рабочий велосипед непохоже -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
| Zero |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
Да я пока плохо знаю С++, и не очень понял, что там за принцип... Я думаю если я буду с этим разбиратся то это будет надолго. А курсач предназначен для того чтобы я просто разобрался с классами и некоторыми особенностями языка.
Я синтаксически не правильно написал слово
поэтому не понятно, я имел ввиду, в текстовый файл запишу всю инфу, а потом оттуда буду считывать, с помощью другого приложения. |
||||||
|
|||||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Принцип простой - писать содержимое класса поэлементно, вплоть до тех элементарных типов, которые можно выводить в поток напрямую (int, string, etc) + некоторую служебную информацию, как например длина сохраненного вектора, чтобы его потом можно было корректно считать. *в сторону* О Комитет! Когда ты дашь нам рефлексию и стандартный способ сериализации, чтобы люди вот так не мучались... -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |