При загрузке файла сервером с клиента на java сервер вылетает с ошибками:
ASSERT: "!isEmpty()" in file ..\..\include/QtCore/../../src/corelib/tools/qlist.h, line 344
ASSERT: "!isEmpty()" in file ..\..\include/QtCore/../../src/corelib/tools/qlist.h, line 348
Интересно, что когда все это работало в основном потоке, не вылетало. Краткий код:
/*tcpservthread.h ну это очень кратко там еще много моего быдлокода*/
class TcpServThread: public QThread
{
Q_OBJECT
private:
int keyFiles = 0;
bool writefilepr = false;
QFile* rfile;
ResponseFileObj* rfo = 0;
QTcpSocket* pClientSocket;
public slots:
void slotReadClient ();
}
/*tcpservthread.cpp*/
TcpServThread::TcpServThread(qintptr ID, QObject *parent):
QThread(parent)
{
this->socketDescriptor = ID;
}
void TcpServThread::run()
{
pClientSocket = new QTcpSocket();
if(!pClientSocket->setSocketDescriptor(this->socketDescriptor))
{
return;
}
connect(pClientSocket, SIGNAL(disconnected()),pClientSocket, SLOT(deleteLater()));
connect(pClientSocket, SIGNAL(disconnected()),this, SLOT(sldiconnected()));
connect(pClientSocket, SIGNAL(readyRead()),this,SLOT(slotReadClient()));
connect (pClientSocket,SIGNAL(error (QAbstractSocket::SocketError)),this,SLOT (slotSocketError (QAbstractSocket::SocketError)));
exec();
}
void TcpServThread::slotReadClient()
{
//Эту переменную обнулим когда файл полностью прочитаем по ней ориентируемся
//что нам делать если twobytes==0 то значит мы не закончили с определенной
// командой например загр файла
if(twobytes==0) {
float ltwobytes;
int lsixbytes;
if(readFirstInfo(ltwobytes, lsixbytes)) {
twobytes = ltwobytes;
sixbytes = lsixbytes;
} else {
return;
}
}
if(twobytes == COM_LOAD_FILE) {
int avaib = pClientSocket->bytesAvailable();
if(avaib==0 || avaib<0) {
return;
}
//Смотрим есть ли у нас список файлов вобьекте, нет парсим
if(!rfo) {
QString infostr = readMainStr(false);
qDebug() <<"twobites|sixbytes" <<twobytes <<sixbytes;
if(infostr=="") {
return;
}
rfo = parseToCl(infostr);
}
int fsize = rfo->files.size();
//Вот в этом цикле и происходит загрузка файла с клиента,
//но в нем пока 1 единственный файл и все это вылетает с ошибкой
//наверное я делаю что то не так
//MFile - обьект с информацией по загружаемому файлу
//keyFile ключ который я сохраняю чтобы не проходить список загр. файлов с самого начала
for(int i= keyFiles; i<fsize; i++) {
MFile file = rfo->files[i];
avaib = pClientSocket->bytesAvailable();
if(file.isDirectory()) {
// //тут оперции по созданию папок не буду приводить будем считать что это 1 файл
} else {
if(avaib == 0) {
keyFiles = i;
break;
}
//сперва глянем писался ли файл
if(writefilepr) {
//да он писался
} else {
rfile = new QFile(file.getAbsolutePuth());
if(!rfile->open(QIODevice::WriteOnly)){qDebug() << "Ошибка открытия для записи";}
writefilepr = true;
}
long msize=0;
//Сколько байтов записало
if(writingBytes>0) {
msize = file.length()-writingBytes;
} else {
msize = file.length();
}
if(avaib > msize || avaib == msize) {
qDebug() <<"iatyt1";
QByteArray b = pClientSocket->read(msize);
rfile->write(b);
rfile->close();
writingBytes = 0;
writefilepr = false;
qDebug() <<"iatyt2";
continue;
} else {
qDebug() <<"iatyt3";
QByteArray b = pClientSocket->read(avaib);
rfile->write(b);
writingBytes += avaib;
keyFiles = i;
qDebug() <<"writebytes=" <<writingBytes <<"|keyFiles="<<keyFiles <<"file.size=" << file.length();
qDebug() <<"iatyt4";
break;
}
}
}
}
Там было немного сложнее, но я решил переписать, чтобы вычислить ошибку - результат тот же самый - вылетает.
Здравствуйте, подскажите пожалуйста, не могу запустить игру в релизеПрописал в input sfml-graphics
Добрый день, передом мной появилась такая задача: Я имею программу, которая подбирает данные из COM to USB и она передает строки, непрерывно 20 минутСтрока...
Подскажите, пожалуйста, есть ли какой-нибудь инструмент способный преобразовать jQuery код в чистый JavaScript?
В чем проблема то вот я использовал этот метод - Standalone With Ajax Data https://framework7io/docs/autocomplete