0

私はGoogleのがらくたのドキュメントに苦労しており、サーバーに正常に接続しているにもかかわらず、プログラムをチャンネルに参加させることができません. (サーバーに接続済みと表示されます)

//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 接続オプション (コンポーネント) がありますか?

どんな助けでも感謝します.GOOGLEはこれについて本当に何も持っていません. 私が望むのは、チャンネルのチャット メッセージを接続/確認し、チャットで話すことができることだけです。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()はまだ実行中であり、OnConnectedイベントがトリガーされたときにまだ IRC サーバーに実際にログインしていません。Connect()コマンドを発行する前に、終了するまで待ちます。

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