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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2009, 22:12   #1
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
Печаль IRC получение сообщения

Доброго время суток! прочу вас помочь мне, я пишу irc бот, появились сложности в обработчике принятия сообщения вот код
Код:


procedure IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
AContent: String; var Suppress: Boolean);
  begin
 ShowMessage(AUser.Nick+' '+Acommand+' '+AContent);
end;


 Procedure Connect;
begin
 randomize;
 irc:=Tidirc.Create(nil);
 IRC.OnRaw:=IdIRC1Raw; // тут ругается на меня 
 IRC.Host:=Server ;
 IRC.Port:= port;
 IRC.Nick:= pref+'_'+intToStr(random(255));
 IRC.AltNick:= intToStr(random(255));
 IRC.RealName:= 'Dmitriy';
   try
    IRC.Connect;
  except
    if not IRC.Connected then
      begin
         SleepEx(5000,true);
         write('Error connectiing to   ' + IRC.Host);
          Connect;
      end;
  end;
  write('connected OK ' +  IRC.Host+ intToStr(IRC.Port)+IRC.Nick);
  IRC.Join(CHANNEL);
  IRC.Say(CHANNEL, 'hi');


end;
вотак ругается
[Error] Project1.dpr(59): Incompatible types: 'method pointer and regular procedure'

подскажите как исправить мой код
jone вне форума Ответить с цитированием
Старый 27.04.2009, 00:35   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, idIRC;

type
  TForm1 = class(TForm);
    procedure IdIRC1R(Sender: TObject; AUser: TIdIRCUser; ACommand,AContent: String; var Suppress: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  V1:TIdIRC;

implementation

---------------------------------------------------------

procedure TForm1.IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
AContent: String; var Suppress: Boolean);
  begin
 ShowMessage(AUser.Nick+' '+Acommand+' '+AContent);
end;


 Procedure Connect;
begin
 randomize;
 irc:=Tidirc.Create(nil);
 IRC.OnRaw:=Form1.IdIRC1Raw; // тут ругается на меня 
 IRC.Host:=Server ;
 IRC.Port:= port;
 IRC.Nick:= pref+'_'+intToStr(random(255));
 IRC.AltNick:= intToStr(random(255));
 IRC.RealName:= 'Dmitriy';
   try
    IRC.Connect;
  except
    if not IRC.Connected then
      begin
         SleepEx(5000,true);
         write('Error connectiing to   ' + IRC.Host);
          Connect;
      end;
  end;
  write('connected OK ' +  IRC.Host+ intToStr(IRC.Port)+IRC.Nick);
  IRC.Join(CHANNEL);
  IRC.Say(CHANNEL, 'hi');


end;
я проверял так работает
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.04.2009, 10:45   #3
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
По умолчанию

Моя программа работает без формы, а вы показали с формой

нужно без формы
jone вне форума Ответить с цитированием
Старый 27.04.2009, 10:47   #4
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
По умолчанию

делаю так

Код:
type
  Tirc = class(TidIRC)
    procedure IdIRC1R(Sender: TObject; AUser: TIdIRCUser; ACommand,AContent: String; var Suppress: Boolean);
     end;

Код:
procedure IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
AContent: String; var Suppress: Boolean);
begin
ShowMessage(AUser.Nick+' '+Acommand+' '+AContent);
end;


 Procedure Connect;
begin
 randomize;
 irc:=Tidirc.Create(nil);

 IRC.OnRaw:=IRC.OnRaw;
 IRC.Host:=Server ;
 IRC.Port:= port;
 IRC.Nick:= pref+'_'+intToStr(random(255));
 IRC.AltNick:= intToStr(random(255));
 IRC.RealName:= 'Dmitriy';
   try
    IRC.Connect;
  except
    if not IRC.Connected then
      begin
         SleepEx(5000,true);
         write('Error connectiing to   ' + IRC.Host);
          Connect;
      end;
  end;
  write('connected OK ' +  IRC.Host+ intToStr(IRC.Port)+IRC.Nick);
  IRC.Join(CHANNEL);
  IRC.Say(CHANNEL, 'hi');


end;
работает без ошибок но ShowMessage(AUser.Nick+' '+Acommand+' '+AContent); не выполняет (((
jone вне форума Ответить с цитированием
Старый 27.04.2009, 21:20   #5
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
По умолчанию

ну помагите пожалуста :*(
jone вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор IRC клиента Levsha100 Софт 2 02.03.2009 06:54
Проблема с IRC.Voice Lich Работа с сетью в Delphi 0 01.08.2008 16:08
qip + irc Спартак Софт 0 19.07.2008 21:44
IRC в Indy Zer0 Работа с сетью в Delphi 2 12.02.2008 09:57
Библиотека IRC Client. celovec Работа с сетью в Delphi 1 15.06.2007 17:13