Russian Qt Forum

Qt => Общие вопросы => Тема начата: altVis от Март 21, 2008, 10:59



Название: Очистка QBuffer при чтении.
Отправлено: altVis от Март 21, 2008, 10:59
День добрый.
Можно ли каким-нибудь способом заставить QBuffer вести себя, как QTcpSocket, т.е. надо чтобы после read или readAll, из буффера удалялись прочитанные данные?
Если после считывания закрыть и снова открыть буффер, в нём содержится предыдущая информация.


Название: Re: Очистка QBuffer при чтении.
Отправлено: Sergeich от Март 21, 2008, 11:18
Отнаследуйся от QBuffer и переопредели readData()


Название: Re: Очистка QBuffer при чтении.
Отправлено: altVis от Март 21, 2008, 11:23
А как вообще удалить данные из буффера?
Не перезаписать, а именно удалить их оттуда?


Название: Re: Очистка QBuffer при чтении.
Отправлено: Sergeich от Март 21, 2008, 11:45
Код:
QBuffer buf;
buf.buffer().remove(0, n);


Название: Re: Очистка QBuffer при чтении.
Отправлено: altVis от Март 21, 2008, 11:56
Код:
QBuffer buf;
buf.buffer().remove(0, n);

Блин!Точно!
Спасибо  :)
Хотя удобнее наверное buffer().clear()

И ещё вопрос.
А стоит ли отказываться от tcpsocket буффера в пользу своего?
Т.е. например на данный момент в программе просто передаётся ссылка на сокет в функции, откуда считывается информация.
Стоит ли создавать свой буффер и на readyRead() сокета просто скидывать всю полученную информацию в буффер, а потом передавать уже его в функции?
Есть ли какие-то реальные плюсы от этого?
Функции без бесконечных циклов, да и процессорное время практически не отнимают, т.е. задержек нет.