Russian Qt Forum
Ноябрь 23, 2024, 23:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема при записи и считывании данных используя QBuffer и QDataStream  (Прочитано 3976 раз)
VAP
Гость
« : Август 05, 2010, 13:35 »

Добрый день. Для приведения данных к своему типу (нужно получить QList<T>) использую QBuffer и QDataStream. Записываю/читаю:
Код:
     //запись
     QByteArray byteArray;
     QBuffer buffer(&byteArray);
     buffer.open(QIODevice::ReadWrite);
     QDataStream out(&buffer);
     ......
     QString str1;
     out << str1
     ......
     QString str2;
     out << str2; и т.д.

     //чтение
     QList<T> myTypeList;
     QDataStream in(&buffer);
   
     while (!buffer.atEnd()) {
              in >> myTypeList;
     }


Но list остается пуст. Что делаю не так, помогите разобраться.
Записан
Amigo_sa
Гость
« Ответ #1 : Август 05, 2010, 15:59 »

Добрый день. Для приведения данных к своему типу (нужно получить QList<T>) использую QBuffer и QDataStream. Но list остается пуст. Что делаю не так, помогите разобраться.
Продебажил ваш код, у вас просто ни разу в цикл while не заходит. Нужно сделать buffer.seek(0); тогда в списке (у меня QList<QString>) восстанавливаются 2 элемента, только пустые)

P.S. Еще я бы поменял местами имена ваших потоков in и out Улыбающийся
« Последнее редактирование: Август 05, 2010, 20:39 от Amigo_sa » Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #2 : Август 05, 2010, 18:36 »

После записи в буфер, у вас указаель стои в его конце. Поэтому отсутствует вхождение в цикл.
Попробуйте изменить положение pos() применив QBuffer::seek( 0 );
Записан
VAP
Гость
« Ответ #3 : Август 05, 2010, 20:07 »

Спасибо за подсказки, но пока не помогло, будем разбираться Улыбающийся
Записан
Waryable
Гость
« Ответ #4 : Август 18, 2010, 12:14 »

Есть предположение, что вы всетаки инициализируете как-нибудь  переменные str1 и str2 перед операциями: out << str1 и out << str2. Иначе трудно надеяться на то, что операция in >> myTypeList хоть что нибудь извлечет из пустого потока.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.