Russian Qt Forum

Qt => Общие вопросы => Тема начата: west от Октябрь 01, 2007, 10:39



Название: QDataStream->device()->at(int):????
Отправлено: west от Октябрь 01, 2007, 10:39
Возникла такая проблема: поток (QDataStream) связан c QByteArray, чтение приходится делать непоследовательное, т.е. переодически приходится "прыгать" по массиву данных. Как выставиться в нужную позицию чтения?
QDataStream->device()->at(int) нормально позиционирует по файлу (оно и понятно), а что делать при работе с  QByteArray?


Название: Re: QDataStream->device()->at(int):????
Отправлено: Dendy от Октябрь 01, 2007, 17:05
Может как то так.

Код:
QByteArray bytes;
...
QBuffer buffer( &bytes );
buffer.open( QIODevice::ReadOnly );
...
QDataStream ds( &buffer );
ds.seek( somePosition );
qint64 someValue;
ds >> someValue; // reading 8-bytes value from somePosition


Название: Re: QDataStream->device()->at(int):????
Отправлено: west от Октябрь 02, 2007, 10:59
Эт наверное в каком-то другом Qt, на 3.3.3   QDataStream::seek(int)  метода нет :(


Название: Re: QDataStream->device()->at(int):????
Отправлено: Dendy от Октябрь 02, 2007, 11:39
Упс. Имелось в виду:

Код:
ds.device()->seek( somePosition );