Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];

Вниз

Поток, передача параметра в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.004 c
2-1257999548
Андрей Смирнов
2009-11-12 07:19
2010.01.03
Как доработать функцию поиска, для работы в цикле?


15-1256888189
Сергей М.
2009-10-30 10:36
2010.01.03
О птице в облаках


15-1257172006
Loky1984
2009-11-02 17:26
2010.01.03
Не запускается Delphi6


11-1209885490
ForestGamp
2008-05-04 11:18
2010.01.03
OnQueryEndSession


15-1257115787
Германн
2009-11-02 01:49
2010.01.03
Я правильно понял, что Visual Basic от MS бесплатен?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский