Форум: "Начинающим";
Текущий архив: 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.007 c