Название: Вывод данных в QByteArray QT 3.3.8
Отправлено: Примерный ученик от Март 05, 2011, 15:12
#pragma pack(1)
typedef struct p1 { short int ka; long vit; short int kv; double d; char t[60]; } P1;
#pragma pack()
typedef vector <p1> vP1; // вектор Зон видимости
void Form1::calc() { QByteArray ba; QDataStream stream(ba,IO_WriteOnly); P1 p; vP1 vv; int ii=0; p.ka=32767; p.vit=0x0; p.kv=32767; p.d=0; for (short i=0;i<60;i++) { short j=i&0x000f; p.t[i]=j; } vv.push_back(p); p.ka=0; p.vit=0xF0F0F0F0; p.kv=0; p.d=0; for (short i=0;i<60;i++) { short j=i&0x0007; p.t[i]=j; } vv.push_back(p); stream.device()->reset(); ba.resize(0); QFile pp("data.ttt"); pp.open(IO_WriteOnly); p=vv[0]; stream.writeBytes((char *)&p,sizeof(p)); p=vv[1]; stream.writeBytes((char *)&p,sizeof(p)); pp.writeBlock((char *)&ba[0],ii); pp.close(); }
перед каждой записью появляются 2 байта, в которых записана длина структуры т.е. длина полученного файла не 156 байт, а 160. Как с этим бороться? Что я не так делаю?
Название: Re: Вывод данных в QByteArray QT 3.3.8
Отправлено: crackedmind от Март 05, 2011, 16:57
Попробовать writeRawBytes, вместо writeBytes...
Название: Re: Вывод данных в QByteArray QT 3.3.8
Отправлено: Примерный ученик от Март 05, 2011, 17:39
Попробовать writeRawBytes, вместо writeBytes...
Спасибо, сработало ;D
|