0

我一直在为谷歌的垃圾文档而苦苦挣扎,即使它连接到服务器很好,也无法让程序加入频道。(它说连接到服务器)

//On Form Make
procedure TForm2.FormCreate(Sender: TObject);
  begin
   IdIRC1.Connect();
  end;

//on connected
procedure TForm2.IdIRC1Connected(Sender: TObject);
  begin
   ShowMessage('Connected to server');
   IdIRC1.Join('#TheChannel', 'password');
  end;      

一旦我关闭表单,就会出现一个错误:

Project raised exception class EIdException with message 'Not Connected'

此外,一旦连接,我会使用哪些功能来谈论频道/检查输入?Delphi 应用程序还有哪些其他 IRC 连接选项(组件)?

任何帮助都将不胜感激,谷歌对此一无所知。我想要的只是能够连接/检查频道聊天消息并在聊天中交谈;通过 IRC 的简单字符串 IO...

4

2 回答 2

1

猜猜你没有满足所有的服务器要求。只是 IdIrc.Connect 是不够的,这对我有用:

FIRC.Host:= 'irc.freenode.org';
FIRC.Port := 6667;
FIRC.Username:= 'SapoIndy';
FIRC.Nickname:= 'SapoIndy';
FIRC.RealName:= 'Fabio Gomes';
FIRC.Connect;

FIRC.Join('#TheChannel');

要弄清楚发生了什么,您需要获取一些事件的输出,我已经实现了这些:

FIRC.OnStatus:= @Status;
FIRC.OnNotice:= @Notice;
FIRC.OnMOTD:= @MOTD;

搞定一些事件,你应该弄清楚服务器告诉你什么,不要反复试验。

关于发送和接收消息,我前段时间已经实现了一些,这里是项目,它是使用 Lazarus 制作的。

https://bitbucket.org/fabioxgn/irc/src/b510d73e553d/main.pas

于 2012-05-22T11:56:13.767 回答
1

请勿Join()OnConnected活动中致电。该事件仅意味着建立了底层套接字连接。 仍在运行,并且在触发事件Connect()时尚未真正登录到 IRC 服务器。OnConnected等到Connect()退出再发出任何命令:

procedure TForm2.FormCreate(Sender: TObject); 
begin 
  IdIRC1.Connect; 
  ShowMessage('Connected to server'); 
  IdIRC1.Join('#TheChannel', 'password'); 
end; 
于 2012-05-22T17:26:53.343 回答