![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Hardcode |
![]()
Сообщение
#1
|
Новичок Группа: Неактивирован Сообщений: 4 Регистрация: 3.4.2011 Пользователь №: 2569 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Имею небольшое приложение, в котором хотелось бы иметь возможность при запуске считывать некоторые данные из бинарного файла, который, естественно, нужно заранее создать. Однако у меня никак не получается отправить в QDataStream строку QStream. Причем проблему я заметил только с QString: например, QPixmap записывается и считывается без проблем.
Создал новый тест-проект, вот код:
Результат работы программы - файл output.bin размером 0 байт. Сообщения об ошибке не возникало. Кто-нибудь сталкивался с подобным? Или, может быть, в коде что-то упущено? Система: Linux x86_64, GCC 4.6.0, Qt 4.7.2 |
|
|
PAFOS |
![]()
Сообщение
#2
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Попробуй так:
|
|
|
abc |
![]()
Сообщение
#3
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
во-первых, как ты завершаешь своё приложение?
я сунул твой код в конструктор окна, и код отработал. я скомпилировал твой код, как он есть, и строка не записалась. затем я добавил - output.close(); запись произошла. почему? мне приходит в голову, что в первом случае (код в конструкторе класса) по выходе из конструктора объект QFile output удаляется, предварительно закрывая файл - изменения вносятся. А во втором случае твоя программа не завершается, QFile output нигде не удаляется, файл остаётся открытым, изменения не вносятся |
|
|
Hardcode |
![]()
Сообщение
#4
|
Новичок Группа: Неактивирован Сообщений: 4 Регистрация: 3.4.2011 Пользователь №: 2569 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Да, действительно, проблема исчезла после вызова output.close().
как ты завершаешь своё приложение? В этом-то и дело. Завершал из консоли по Ctrl+C, забыв, что в этом случае деструктор не будет вызван и буфер не сохранится на диске. Но ведь, что самое интересное, абсолютно тот же подход у меня работал в случае QPixmap ![]() Вопрос решен, спасибо за советы ![]() |
|
|
abc |
![]()
Сообщение
#5
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
да, правда, при завершении программы QPixmap записывается
объяснить не могу ![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 1.6.2025, 22:47 |