138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
|
|
1 | |
Ошибка при открытые файла14.12.2013, 00:57. Показов 1744. Ответов 28
Метки нет (Все метки)
Ошибка при открытые файла. В файл запысывает нормально. Даже читает то что там есть(несколько обьектов) но после того как прочитает последний обьект, то ошибка, хз почему. Надо записать и прочитать обьекты класса Parts. В классе написал методы записи и чтения самы себя(взял с Лафоре). В autoRepair есть методы saveToFileParts и openFromFileParts. В проекте уже есть файлик который надо открыть(в нем два обьекта). Помогите мне пожалуста с етим, надо сдавать курсовую скоро, и только вот это не работает(
0
|
14.12.2013, 00:57 | |
Ответы с готовыми решениями:
28
При отправке файла при помощи TFTP в логе появляется запись: "Синтаксическая ошибка в имени файла" При открытии Opera, пропадают открытые закладки При "пробуждении" ноутбук загружается, как при обычном включении и все открытые до сна вкладки теряются При открытии проекта не открываются последние открытые окна |
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
|
|
14.12.2013, 01:07 [ТС] | 2 |
из цикла оно выходит, и когда openFromFileParts доходит до конца, то ошибка(
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
14.12.2013, 01:49 | 3 |
Здесь почитайте на эту тему:
Код из "Р.Лафоре. ООП в С++" Запись и чтение объектов разных классов в один файл Запись и извлечение данных в несколько запусков программы Не могу найти ошибку. Запись/чтение из файла Добавлено через 27 минут Ситуацию у вас усугубляют поля string. Такие классы проблематично читать\записывать, в бинарном режиме, и без таблиц виртуальных функций.
2
|
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
|
|
14.12.2013, 01:52 [ТС] | 4 |
alsav22, почитал темы. всеравно не понял в чем дело. говорят что если обьект класса в котором есть виртуальные методы, то нельзя использовать для него бинарное чтение\запись. Но при етом, я записал, и прочитал(я построчно протестил код в методе openFromFileParts с выводом даных обьекта, все вывело так как вводил). А когда метод доходит до конца, то ошибка
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
14.12.2013, 02:09 | 5 |
Если темы внимательно прочитали, то должны понять что: может работать, может не работать (почему в темах есть объяснение). Например, запишите данные в файл в Debug, а прочитайте из файла в Release. Наверняка, уже не будет нормально работать. Код большой, там и другие ошибки могут быть, но какой смысл в них разбираться, если в основе заложена кривизна. Насчёт бинарного чтения/записи string может здесь почитать: фейл при чтении из файла
Работа с бинарными файлами (программка дважды записывает последнее число)
1
|
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
|
|
14.12.2013, 02:14 [ТС] | 6 |
alsav22, то все из за полиморфизма(такое я прочитал в других темах)?
Добавлено через 1 минуту alsav22, кстати, есть смылс гуглить сериализацию для моей проблемы?
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
14.12.2013, 02:22 | 7 |
Если я правильно понимаю, сериализация должна помочь со string, но не поможет с полиморфизмом. Но не утверждаю, сереализацией не интересовался. Можно ведь не использовать бинарное чтение\запись: читать\записывать полями.
1
|
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
|
|
14.12.2013, 13:25 [ТС] | 8 |
alsav22, я решил эту проблему так: сделал еще один класс, который никого не наследует, поля максимально похожи на поля класса Parts, только вместо стрингов массивы char. Сделал так что Parts можно перевести в обьект етого класса и наоборот. Сохраняю и открываю я именно эти промежуточные обьекты. Проблем нет. Только вот, Parts простенький класс, а untreated_order не простенький. Хочу сохранять каждый заказ в отдельный файл, но как записать в один файл обьекты разных классов, и потом их всех считать?
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||||||||||||
14.12.2013, 16:11 | 9 | |||||||||||||||
Зачем все эти сложности, если просто можно записывать поля?
При компиляции, выдаётся предупреждение (warning C4715: OnlyInteger::return_ineger: значение возвращается не при всех путях выполнения) на этот метод:
В void Breakage::edit() есть использование неинициализированной переменной types_key:
Код для защиты от ввода не целых чисел (в строке ввода только цифры, перед которыми могут быть + или -):
1
|
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
|
|
14.12.2013, 17:40 [ТС] | 10 |
alsav22, а как записывать полями?
0
|
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
|
|
14.12.2013, 18:41 [ТС] | 12 |
alsav22, ....что? чесно говоря, я не очень понял эту строчку. та и как потом считать?
Добавлено через 34 секунды думаю попробую использовать сериализацию из буста.
0
|
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
|
|
14.12.2013, 21:54 [ТС] | 14 |
alsav22, можно пример небольшой(где одно из полей класса - контейнер(в моем случае - вектор))?
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||||||
14.12.2013, 23:07 | 15 | ||||||||||
Кликните здесь для просмотра всего текста
Можно так:
1
|
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
|
|
14.12.2013, 23:37 [ТС] | 16 |
alsav22, а если у меня в контейнере обьекты других классов, то для них тоже надо перегрузить операторы?
0
|
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
|
||||||||||||||||
15.12.2013, 00:42 [ТС] | 18 | |||||||||||||||
alsav22, вот это я сделал перегрузку вывода в файл по примеру, что вы написали.
Кликните здесь для просмотра всего текста
А как тогда считывание из файла сделать? Добавлено через 2 минуты вот так? Кликните здесь для просмотра всего текста
Добавлено через 54 секунды если у меня первые 3 поля - string, а остальные 2 - int? Добавлено через 34 минуты вроде чуть понял, но всеравно много вопросов. Parts содержит у меня 3 стринга(строки могут быть с пробелами) и два инта. Надо записывать контейнер таких обьектов в файл, и считивать обратно. Как писать в файл както более понятно(поля одного обьекта можно разделять "\n", разные обьекты наверное двома "\n"). Только как заставить тогра програму счытивать одну строчку в одне поле, вторую - в второе поле..., а потом переходить к счытиванию второго обьекта? И как должен выгледить сам процес чтения(запись более менее понятно)? Такая зацикливаеться: Кликните здесь для просмотра всего текста
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||||||
15.12.2013, 01:16 | 19 | ||||||||||
Когда строки или данные пишите, то нужно разделять их '\n'.
Если с пробелами, то использовать getline() (13 пост), только перед getline() в потоке не должно быть '\n':
2
|
138 / 5 / 1
Регистрация: 25.03.2013
Сообщений: 228
|
||||||
15.12.2013, 01:24 [ТС] | 20 | |||||
alsav22, таак, уже лучше) только так
Кликните здесь для просмотра всего текста
0
|
15.12.2013, 01:24 | |
15.12.2013, 01:24 | |
Помогаю со студенческими работами здесь
20
Винда скрывает все открытые окна при перетаскивании одного Ошибка при открытии файла - Ошибка в части содержимого в книге FTP SERV-U Ошибка при копировании файла при медленном интернете При использовании кода в модуле ошибка при открытии файла Ошибка при вызове метода класса, при чтении из файла Ошибка при подключение файла БД SQLite при сборке в Maven в Intellij IDEA Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |