ich bekomme von einem QDataStream eine X- Anzahl von QByteArray Elemeten. Diese möchte ich mit einer Schleife auslesen, und zwar wie folgt:
Code: Alles auswählen
while (tcpCommands->hasNext()) {
QPair<QByteArray, QByteArray> pair = tcpCommands->next();
qDebug() << pair;
}
Code: Alles auswählen
bool TcpCommand_system_getAllTcpCommands::hasNext() const {
return _dataStream.status() == QDataStream::Ok;
}
QPair<QByteArray, QByteArray> TcpCommand_system_getAllTcpCommands::next() {
QPair <QByteArray, QByteArray> pair;
_dataStream >> pair.first;
_dataStream >> pair.second;
return pair;
}
Problem wird wohl das sein, dass QDataStream.atEnd() erst das Ende des Lesens zurückgibt, wenn das lesen bereits fehlgeschlagen ist, und nicht davor...QPair("loggedInUser","getUserColumn")
QPair("main","userLogin")
QPair("main","connectTcp")
QPair("main","serverVersion")
QPair("system","getAllTcpCommands")
QPair("","")
Workaround wäre:
Code: Alles auswählen
while (true) {
QPair<QByteArray, QByteArray> pair = tcpCommands->next();
if (!tcpCommands->hasNext()) break;
qDebug() << pair;
}
Jemand eine Idee, wie ich das Problem lösen kann??
lg