Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2013, 19:15   #1
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию Как сделать в процедуре Event?

Добрый день. Есть модуль(упрощенно):
Код:
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 для обработки.
Pcrepair вне форума Ответить с цитированием
Старый 22.03.2013, 21:36   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Самое время делать класс
Человек_Борща вне форума Ответить с цитированием
Старый 23.03.2013, 11:34   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

в Delphi есть понятие процедурный тип.
Код:
TeventProc =procedure(eventval: string);
Система событий которую в не хотите применять основана на его развитии (объектный процедурный тип)
Код:
TNotifyevent =procedure(sender: TObject)  of object;
TeventProc =procedure(eventval: string) of object;
передать в процедуру свою процедуру "callBackproc".

Код:
TeventProc =procedure(eventval: string);

procedure proc(par1: integer;  eventproc: TEventProc);
begin
  for j:=1 to par1 do
    eventproc(inttostr(j));
end;

procedure Event(eventval: string);

proc(10, Event);
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 23.03.2013 в 11:38.
evg_m вне форума Ответить с цитированием
Старый 23.03.2013, 13:25   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Обычно, чтобы процедура обработала данные, ее просто вызывают. Чем Вас этот метод не устраивает?
s-andriano вне форума Ответить с цитированием
Старый 23.03.2013, 15:00   #5
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию

уже всем устраивает
просто предполагалась что есть иной способ, ну чтоб попробовать, расширить кругозор.
Pcrepair вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как использовать глобальную таблицу в процедуре? Gandfil Общие вопросы Delphi 4 20.08.2011 13:02
Как отменить jQuery.Droppable находясь в event:drop? Izhic JavaScript, Ajax 4 08.11.2010 00:53
как отключить соединения с БД в хранимой процедуре Neymexa SQL, базы данных 0 06.04.2010 11:44
как реализовать процедуру в процедуре? Аlex Помощь студентам 11 14.07.2008 10:14
как в процедуре объявить массив? kolduev Помощь студентам 7 18.02.2008 23:35