Форум: "Начинающим";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизОрганизовать в проекте скачивание файлов по принципу работы Reget Найти похожие ветки
← →
allrussia (2006-06-05 11:45) [0]Вопрос в следующем:
есть процедура закачки файла, допустим URLDownload (URL: string)
или компонент WinHTTP (utilmind) и т.п. и процедура WinHTTP.Get... и .т.д.
работает она в отдельном потоке (не ругайте, не знаю как правильно сформулировать)
в общем если код будет выглядеть так:
begin
WinHTTP.GEt (URL);
Showmessage ("");
end
то после запуска сразу вылетит сообщение
Так вот, а нужно дождаться завершения первой команды а потом показать сообщение.
В Reget (или в аналогах) закачки могут закачиваться друг за другом, т.е. если мне надо скачать 100 файлов
я пишу
типа for i:=0 to 99 do WinHTTP.Get (URL+inttostr(i))
у меня срабатывает только 1 закачка, а нужно чтобы все друг за другом закачались и при этом форма не тормозила
В общем: как реализовать скачку файла в отдельном потоке, дождаться завершения, начать закачку следующего, и .т.д., и чтоб форма не тормозила вообще (как в Регет), или компонент посоветуйте, пожалуйста
я думаю мастерам это раз плюнуть
Спасибо
← →
Dmitrij_K (2006-06-05 12:37) [1]Отправил на твою почту тестовый проект. Пробуй
← →
learner © (2006-06-05 13:25) [2]Dmitrij_K (05.06.06 12:37) [1]
А мне не могг бы отправить ? Спасибо.
← →
Dmitrij_K (2006-06-05 13:42) [3]http://up-file.com/download/b97cfd815613/Multi-Thread.rar.html
← →
allrussia (2006-06-05 15:04) [4]Dmitrij_K
спасибо, не подскажешь как правильно использовать твой проект
пока пробовал AddThread.IdHTTP.Get("http://...);
но форма при этом зависает
и откуда брать статистику сколько скачалось
и еще ошибку выдает в Utread.pas на
FIdHTTP.ConnectTimeout := 60000;
← →
Dmitrij_K (2006-06-05 15:15) [5]Это только тест многопоточности.
На форме расположено 4 мемки
в первой мемке очередь на скачивания
например
http://www.delphimaster.ru/cgi-bin/forum.pl?n=0
http://www.delphimaster.ru/cgi-bin/forum.pl?n=18
http://www.delphimaster.ru/cgi-bin/forum.pl?n=1
http://www.delphimaster.ru/cgi-bin/forum.pl?n=5
жмешь на кнопку
программа запускает потоки (кол-во ThreadCount)
в memo2 показывает что качается
в 3 - что скачаловь
4 - что не скачалось
У меня вместо мемок в проекте StringList
При завершении скачивания срабатывает событие FinishEventProc в переменной mem (TMemoryStream) содержится то что скачалось
И пока в мемо1 есть строки программа будет скачивать их.
← →
allrussia (2006-06-05 15:58) [6]Dmitrij_K
мне не совсем это подходит
моя задача вот:
код типа
begin
HTTP.Get (URL1);
HTTP.Get (URL2);
HTTP.Get (URL3);
Showmessage ("Complete")
end;
или тоже самое но в цикле
при этом чтоб форма не тормозила и было событие onProgress и onComplete
а то что ты предлагаешь я могу и так сделать с помощью компонента WinHTTP
← →
Dmitrij_K (2006-06-05 16:18) [7]Ну извени....
PS
Я не знаю что такое WinHTTP/ Там что нет события прогресса и завершения скачивания?
Может подойдет связка IdHTTP + AntiFrize , форма будет подвисать но не смертельно
← →
allrussia (2006-06-05 16:55) [8]Dmitrij_K
нет к тебе претензий нет :) и не может быть спасибо за помощь! :beer
представляешь я совершенно случайно сейчас обнаружил компонент который делает именно ТО, что нужно называется
TipHTTPClient из пакета TurboPower Internet Professional
метод GetWait
...
for i:=1 to 50 do if can = false then
ipHTTPClient1.GetWait (URL+inttostr(i));
if can = false then Showmessage ("Все успешно скачалось!")
...
...
can:=true;
ipHTTPClient1.Cancel
...
и прогресс есть + завершение и ErrorCodes
специально для тебя даю ссылку правда весит много 16 мб
http://slil.ru/22811567
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c