3 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 120
1

Не записываются данные в QByteArray через QDataStream

29.06.2014, 13:24. Показов 7293. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Проблема такая: в функцию передается QByteArray. Внутри функции получаем размер этого QByteArray, и записываем сначала размер, а затем сам QByteArray в другой, который и выводим из функции. Почему-то он оказывается пустым. Запись вроде бы написана правильно, в чём проблема, не пойму. Код ниже:
C++
1
2
3
4
5
6
7
8
9
QByteArray MainWindow::readyWriteMessage(QByteArray aMessage)
{
    qDebug() << "readyWrite";
    QByteArray message;
    QDataStream messageStrm(&message, QIODevice::WriteOnly);
    messageStrm.setVersion(QDataStream::Qt_4_7);
    messageStrm << quint64(aMessage.size()) + sizeof(quint64) << aMessage;
    return message;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2014, 13:24
Ответы с готовыми решениями:

QByteArray и QDataStream
Помогите разобраться с двумя типами данных QByteArray и QDataStream. Для того чтобы QByteArray...

Передать картинку на tcp сервер(через QDataStream)
Здравствуйте! Возникла проблема: не получается передать картинку с клиента на сервер. Сама картинка...

Не записываются данные в БД
всем привет! делал слайд, нужно загружать изображение и ссылку. изображение загружается на...

Данные не записываются в БД
Требуется помощь возникла ещё одна проблема данные не записываются в БД. config.php : ...

5
205 / 151 / 5
Регистрация: 14.03.2013
Сообщений: 784
29.06.2014, 15:43 2
Цитата Сообщение от Mind_Hunter Посмотреть сообщение
Почему-то он оказывается пустым.
Наверно вот из-за чего
Since QByteArray is not a QIODevice subclass, internally a QBuffer is created to wrap the byte array.
Добавлено через 50 секунд
QByteArray byteArray;
QBuffer buffer(&byteArray);
buffer.open(QIODevice::WriteOnly);

QDataStream out(&buffer);
out << "Hello";
правда у меня все равно не работает.
0
3 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 120
29.06.2014, 15:43  [ТС] 3
QDataStream, это, своего рода, оболочка QBuffer. Проблема в том, что раньше всё нормально работало, именно здесь что-то не так.
0
205 / 151 / 5
Регистрация: 14.03.2013
Сообщений: 784
29.06.2014, 15:56 4
Цитата Сообщение от Mind_Hunter Посмотреть сообщение
QDataStream, это, своего рода, оболочка QBuffer. Проблема в том, что раньше всё нормально работало, именно здесь что-то не так.
C++ (Qt)
1
2
3
4
5
6
    QByteArray ba="";
    qDebug() << ba.toHex();
    QDataStream stream(&ba,QIODevice::WriteOnly);
    stream.setVersion(QDataStream::Qt_4_0);
    stream << (QString) "Hello World!";
    qDebug() << ba.toHex();
Забавно но чтото записалось только как и в каком виде))

Добавлено через 7 минут
Вот еще записываю 16 и все норм.
C++ (Qt)
1
2
3
4
5
    QByteArray ba="";
    QDataStream stream(&ba,QIODevice::WriteOnly);
    stream.setVersion(QDataStream::Qt_4_0);
    stream << 16;
    qDebug() << ba.toHex();
0
3 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 120
29.06.2014, 16:00  [ТС] 5
Самое интересное, что если не переводить в 16-ричную систему, дебаг вообще ничего не выводит)
0
205 / 151 / 5
Регистрация: 14.03.2013
Сообщений: 784
29.06.2014, 16:10 6
Цитата Сообщение от Mind_Hunter Посмотреть сообщение
Самое интересное, что если не переводить в 16-ричную систему, дебаг вообще ничего не выводит)
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
QByteArray readyWriteMessage2(QByteArray aMessage)
{
    qDebug() << "readyWrite";
    QByteArray message;
    QDataStream stream(&message,QIODevice::ReadWrite);
 
    qDebug() << quint64(aMessage.size()) + sizeof(quint64);
    stream << quint64(aMessage.size()) + sizeof(quint64);
    stream << aMessage;
    return message;
}
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
    QByteArray ba2 = "Hello";
    QByteArray ba = readyWriteMessage2(ba2);
    QDataStream stream(ba);
    quint64 temp;
    QByteArray temp2;
 
    stream >> temp;
    stream >> temp2;
 
    qDebug() << temp << " | " << temp2;
 
    return 0;
}
Все нормально записывается)
0
29.06.2014, 16:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2014, 16:10
Помогаю со студенческими работами здесь

Данные не записываются в БД
Здравствуйте! Прошу помощи, потому что сам уже не понимаю. Есть БД в которую должны записываться...

Не записываются данные в БД
Здравствуйте! Столкнулся с проблемой и нужна помощь :( Вроде сделал все как в примере на одном...

Данные не записываются в БД
Дело в том, что не могу понять причину, почему не идёт запись в бд... Помогите пожалуйста......

Данные не записываются в БД
Данные, которые берутся из формы, не записываются в таблицу. Вот код: &lt;?php ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru