crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> QDataStream, как рабоать с QDataStream
flankerr
  опции профиля:
сообщение 28.7.2008, 11:54
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


как рабоать с QDataStream ?
предположим хочу хзатолкнуть в стрим некий буфер:

QDataStream stream;
char tmp[256];
int size = stream.writeRawData(tmp,255);

так вот значение size бредовое (очень большое)
где грабли ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 28.7.2008, 12:03
Сообщение #2


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


а ты указал QIODevice, в который будут записываться данные?
вот пример из ассистента:
QFile file("file.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);   // we will serialize the data into the file
out << "the answer is";   // serialize a string
out << (qint32)42;        // serialize an integer


Сообщение отредактировал void* - 28.7.2008, 12:03
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 28.7.2008, 12:10
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


на счёт size он у меня оказался без знаоквым :blush:
т.е. возразает -1 на самом деле.

запихивал в конструктор QByteArray не помогло....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.7.2008, 12:13
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Returns the number of bytes actually written, or -1 on error
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 28.7.2008, 12:18
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 28.7.2008, 13:13) *
Returns the number of bytes actually written, or -1 on error

Ну то что ошибка это и так понятно
вопрос где грабли ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.7.2008, 12:30
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


помоему грабли как раз в том, что написал void* - устройство неуказано.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 28.7.2008, 12:37
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


т.е. просто как буффер использовать нельзя?

т.е. мне нужен некий буффер в конец которого я записываю произвольнео число байт а когда мне надо считываю происзвольное число байт из начала буффера. Просто не хотелось заново изобретать велосипед.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 28.7.2008, 12:42
Сообщение #8


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


для твоих целей как раз существует класс QBuffer
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.7.2008, 12:49
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


если покажется мало QBuffer'а
еще смотри такие: QQueue и QStack
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 28.7.2008, 15:51
Сообщение #10


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 28.7.2008, 13:49) *
если покажется мало QBuffer'а
еще смотри такие: QQueue и QStack


1.Тогда уж лучше использовать STL-ные очереди
2.Очередь хороша для ФИКСИРОВАННОГО размера читаемых\записываемых данных. А мне надо ПРОИЗВОЛЬНЫЕ. Т.е. в моём случае надо делать обвязку с циклами. ПРи таком раскладе лучше уж "изобрести велосипед" с простым char* и memcpy будет гораздо эффективнее.

Сообщение отредактировал flankerr - 28.7.2008, 15:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 9.7.2020, 7:10