Суббота, 21.12.2024, 20:00 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: xXxSh@dowxXx, Anton93, Волк-1024  
События компонентов в консольном приложении
tatsuДата: Воскресенье, 20.12.2015, 13:53 | Сообщение # 1
Частый гость
Зарегистрирован: 17.05.2009
Группа: Пользователи
Сообщений: 27
Статус: Offline
Всем привет, пилю консольный IRC-клиент. Столкнулся с проблемой - описание событий.
При наличии формы она является классом и процедуры, назначенные на обработку событий, декларируются в описании класса, как его методы.
Однако в консольном приложении для использования компонента я добавляю его в перечень uses.
Подскажите, как при этом нужно обрабатывать события компонента?
С вызовом методов - ничего сложного, обращаюсь через переменную экземпляра класса, а вот с событиями - ляпсус вышел.


Ибо маст дай!
 
ms301Дата: Понедельник, 21.12.2015, 09:26 | Сообщение # 2
Постоянный
Зарегистрирован: 28.11.2012
Группа: Пользователи
Сообщений: 101
Статус: Offline
Версия делфи?
Код
program Project1;

uses
  SysUtils,
  idirc,
  IdContext;

Type
  TObjMetods = Class
    Procedure ServerWelcome(ASender: TIdContext; const AMsg: String);
  End;

var
  irc1: TIdIrc;
  oMetods: TObjMetods;
  { TObjMetods }

procedure TObjMetods.ServerWelcome(ASender: TIdContext; const AMsg: String);
begin
  Writeln(AMsg);
end;

begin
  { TODO -oUser -cConsole Main : Insert code here }
  oMetods := TObjMetods.Create;
  irc1 := TIdIrc.Create(nil);
  try
    irc1.Nickname := 'testNick';
    irc1.Host := '*-*****';
    irc1.Port := 6667;
    irc1.OnServerWelcome := oMetods.ServerWelcome; // Вот что тебе нужно
    sleep(20000);
  finally
    oMetods.Free;
    irc1.Free;
  end;

end.
 
tatsuДата: Понедельник, 21.12.2015, 12:33 | Сообщение # 3
Частый гость
Зарегистрирован: 17.05.2009
Группа: Пользователи
Сообщений: 27
Статус: Offline
ms301, ога, спасибо. Я так понял, что консольное приложение получается линейным. Выходит, что для ожидания события и его обработки придётся описывать петлю. Не приведёт ли это к строго последовательной обработке событий?
К тому же не до конца понял, что здесь происходит --
Код
irc1.OnServerWelcome := oMetods.ServerWelcome;

Это аналогично созданию слушателя события и продолжению работы? или программа встанет колом на этой строке, пока это событие не произойдёт и процедура не выполнится?


Ибо маст дай!
 
ms301Дата: Понедельник, 21.12.2015, 17:31 | Сообщение # 4
Постоянный
Зарегистрирован: 28.11.2012
Группа: Пользователи
Сообщений: 101
Статус: Offline
Цикл нужен. Не станет - если не будете все повторять. Для начала - есть ли в TIdIrc метод ReadLn(ну или что то похожее) и свойсто Connected
 
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz