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