Главная страница
    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.006 c
2-1258047678
AntonioBanderas
2009-11-12 20:41
2010.01.03
Игра пятнашки


2-1258030604
night_light
2009-11-12 15:56
2010.01.03
передача видео по сети


15-1257024611
Юрий
2009-11-01 00:30
2010.01.03
С днем рождения ! 1 ноября 2009 воскресенье


15-1257003526
stas
2009-10-31 18:38
2010.01.03
пустой exe определяется как троян


15-1256225989
Empleado
2009-10-22 19:39
2010.01.03
Поднять облака! Интересно, о какой "установке" идет речь ?...





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