Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.47 MB
Время: 0.011 c
15-1149171523
antonn
2006-06-01 18:18
2006.06.25
Обстановка изменилась?..


15-1148781301
pargo
2006-05-28 05:55
2006.06.25
Естественный отбор


15-1149253449
Новичоккк
2006-06-02 17:04
2006.06.25
Правильно ли работаю с массивом сокетов?


1-1147956544
Layner
2006-05-18 16:49
2006.06.25
Как "заставить" бегать SelectItems в TreeView


3-1146568224
Рыспек
2006-05-02 15:10
2006.06.25
Возможно ли в DataSetProvider.DataSet указать TClientDаtaSet?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский