LINUX.ORG.RU

Qt4 не докачиваются файлы


0

0

for (int i = 0; i < pathList.size(); ++i)
{
	QFile *file = new QFile(directory + "/" + QString().setNum(i + 1) + ".jpg");
	http.get( QString( pathList.at(i).toLocal8Bit().constData() ), file);
}

В pathList штук 20 урлов картинок по 200-300 килобайт

В результате файлы качаются, но в конце каждого
недостаёт 4-8 килобайт (каждый раз меняется)

Проблема как под Debian Lenny, так и под виндой.
IDE - QDevelop, Qt 4.4.0
anonymous

The function does not block and returns immediately. The request is scheduled, and its execution is performed asynchronously. The function returns a unique identifier which is passed by requestStarted() and requestFinished().

есть подозрение, что просто app завершается до конца закачки,
а надо бы попросить его подождать.

max_posedon
()
Ответ на: комментарий от max_posedon

app не завершается (окно остаётся открытым)

там ещё есть:
connect( &http, SIGNAL( requestFinished(int, bool) ), SLOT( increaseDownloadBarProgress(int, bool) ) );

прогрессбар обновляется

// капча fixing =-O

anonymous
()

У вас файлы не закрываются, потому что их никто не удаляет, утечка памяти ведь перед глазами.

QHash<int,QFile*> files_;
...
connect( http, SIGNAL(requestFinished(int,bool)), SLOT(requestFinished(int,bool)) );
...
for ( int i = 1, QStringListIterator it( pathList ); it.hasNext(); ++i )
{
  const QString url = it.next();
  QString fileName = QString( "%1.jpg" ).arg( i );
  QFile * file = new QFile( QDir( directory ).filePath( fileName ) );
  int requestId = http->get( url, file );
  files_[ requestId ] = file;
}
...
void MyDownloader::requestFinished( int requestId, bool error )
{
  delete files_.take( requestId );
}

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

Во, спасибо, теперь всё ОК. Сорри за нубство, плюсами занялся первый раз, ещё вчера программировал только на динамических языках.

P.S. Я так и подумал, что файлы не закрываются, даже закрывал их через file.close(); после запроса, всё равно не помогало

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.