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

Вниз

Поток, передача параметра в onTerminated   Найти похожие ветки 

 
Alexey   (2009-11-11 17:47) [0]

Добрый день!
Столкнулся с такой проблемой-качаю файлы с интернета используя потоки, сначала с определенного URL в список list сохраняются необходимые адреса ссылок, далее в цикле выкачиваю:

  for i:=0 to list.Count-1 do
   begin
    d:=TDownLoader.Create(true);
    d.URL:=list[i];                        // это url что качаю
    d.ToFolder:="C:\";                   // это куда качаю
    d.FreeOnTerminate:=true;
    d.OnTerminate:=thrTerminate; // внимание!
    d.Resume;
   end;


все работает как надо, все отлично.
НО:
Необходимо чтобы по событию onTerminate выводился, например в TMemo, адрес каждого закачанного файла, а вот как передать этот параметр ума не приложу...

Тем более (но это скорее всего моя ошибка, точнее точно моя ошибка) если, например, в обработчике этого события просто написать

ShowMessage("Файл закачан")

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

Подскажите как исправить, чтобы все работало как я хочу, если это возможно.

Заранее спасибо!


 
Dennis I. Komarov ©   (2009-11-11 17:58) [1]

Когда создаешь модуль потока, там чего-то такое написано...


 
Alexey   (2009-11-11 18:03) [2]

Прости, не понял...


 
Юрий Зотов ©   (2009-11-11 18:14) [3]

Memo1.Lines.Add(TDownLoader(Senrder).URL);


 
Юрий Зотов ©   (2009-11-11 18:27) [4]

> Alexey   (11.11.09 17:47)

Проще сделать не через OnTerminate, а так:

1. При создании потока передаем ему Memo и тот запоминает его в своем поле.

2. В конце метода Execute добавляем запись в этот Memo (но обязательно через Synchronize  - см. в справке).


 
Alexey   (2009-11-11 18:36) [5]

to Юрий Зотов:

т.е. в поле передается ссылка на нужный мне Мемо, уже из потока туда записываем...

Блин,здорово!
Спасибо за отличный совет!


 
Leonid Troyanovsky ©   (2009-11-11 18:40) [6]


> Юрий Зотов ©   (11.11.09 18:27) [4]

> Проще сделать не через OnTerminate, а так:

А безопасней 1 вариант, бо там метод формы,
и Memo1 ей известно.

--
Regards, LVT.


 
Alexey   (2009-11-11 18:53) [7]

Вобщем оба способа работает!!! Отлично!

Спасибо всем ещё раз!


 
Anatoly Podgoretsky ©   (2009-11-11 20:43) [8]


> Юрий Зотов ©   (11.11.09 18:27) [4]

Вариант [3] проще, чем передавать в поток и в нем вызывать synchronize


 
Anatoly Podgoretsky ©   (2009-11-11 21:21) [9]

> Alexey  (11.11.2009 17:47:00)  [0]

OnTerminate возникает только один раз, когда уже все файлы будут закачаны.


 
Alexey   (2009-11-11 21:33) [10]


> OnTerminate возникает только один раз, когда уже все файлы
> будут закачаны.


а вот этого я не знал, но все-равно уже все ок, спасибо



Страницы: 1 вся ветка

Текущий архив: 2010.01.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
15-1257163293
БарЛог
2009-11-02 15:01
2010.01.03
Опыт использования движков сайтов


15-1257181639
Badevlad
2009-11-02 20:07
2010.01.03
Обсудить BDV DataHider 3.1


2-1257934753
kyn66
2009-11-11 13:19
2010.01.03
Запуск программы(только 1 копия)


15-1257325741
brother
2009-11-04 12:09
2010.01.03
Формирование анаглифного изображения


15-1257334588
XXL
2009-11-04 14:36
2010.01.03
Сантехники от программирования - нужны ли они ?