Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

Организовать в проекте скачивание файлов по принципу работы 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
15-1148997561
AlexanderMS
2006-05-30 17:59
2006.06.25
"Мастер Delphi"


3-1146032286
jiny
2006-04-26 10:18
2006.06.25
Как передать ссылку на комп.IbDatabase,IbQuery в DLL ?


3-1146039399
sanich
2006-04-26 12:16
2006.06.25
Как выбрать все из двух таблиц?


2-1149674285
Fiallo4ka
2006-06-07 13:58
2006.06.25
глупый вопрос


15-1149209179
Коды
2006-06-02 04:46
2006.06.25
Зачем Linux сделали несовместимым с программами под Виндос?