![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день. Есть модуль(упрощенно):
Код:
unit uHtmlPageLoader; interface uses StrUtils,SysUtils, idHTTP,IdSSL, IdSSLOpenSSL,Dialogs, IdCompressorZLib,Classes,Windows; procedure HtmlPageLoader(AUrl,Search:string; Trth1,Trth2:integer); implementation uses uMainUnit,ShellAPI; procedure HtmlPageLoader(AUrl,Search:string; Trth1,Trth2:integer); var HtmlPage, ConvertHtmlPage, UrlsOut :string; Rating:integer; begin (*----Получение результа---------------------------------*) HtmlPage:=DelTegs(LoadHtmlPage(AUrl)); UrlsOut:=GetUrls(HtmlPage,AUrl,Search,Trth2); ConvertHtmlPage:= DelTrash(TegExch2(TegExch1(HtmlPage)), AUrl,Search,Trth1); Rating:=Rate(ConvertHtmlPage,Search); (*--------------------------------------------------------*) (*-----Асинхронная передача результата работы процедуры---*) if (Rating > 5) then begin gRate:=Rating; (*это ГлобПерем*) gUrl:=AUrl; gPageUrls:=UrlsOut; (*вот тут нужно инициировать процедуру Restore в другом модуле для обработки результатов*) end else Exit; (*иначе выход из процедуры без передачи результата*) end; Если бы это был объект то у него могли бы быть события. но делать класс пока еще рано Вопрос: как вообще можно передать сигнал в другую процедуру Restore о том что пора обработать данные. можно конечно таймер приделать, но нежелательно. В самой процедуре HtmlPageLoader вызывать код процедуры Restore тоже нельзя, этот загрузчик будет запускаться в потоке(несколько HtmlPageLoader одновременно) и оне будут асинхронно передавать результаты в в процедуру Restore для обработки. |