Prosty klient IRC z wykorzystaniem Indy 10 - brak połączenia

0

Witam, próbuje napisac prostego klienta irc w delphi xe 5 używam Indy 10, juz od kilku dni walcze z tym szukajac na rónych forach i nic nie moge wywalczyc.
Wygląda jak gdyby się łączył z serverem irc ale nie może wejść na kanał.
poniżej podaje kod, może któryś z kolegów naprowadzi mnie na to co jest nie tak.

procedure TForm1.Button1Click(Sender: TObject);
begin

  // IdIRC1.Host := 'efnet.xs4all.nl';
   //IdIRC1.Port := 6667;
   IdIRC1.Nickname := 'test';
   IdIRC1.Username:='test2';
     IdIRC1.AltNickname:='test____';

  try
     idIRC1.Connect;  // timeout 60 seconds
   except
     if not idIRC1.Connected then
       begin
         MessageDlg('Error connectiing to ' + idIRC1.Host, mtError, [mbOK], 0);
         Exit;
       end;
   end;
   MessageDlg('Connected to ' + idIRC1.Host, mtInformation, [mbOK], 0);
   //idIRC1.Join(edit3.text);
   button1.Enabled:=false;




end;

procedure TForm1.Button2Click(Sender: TObject);
begin
idirc1.Join('#test232');
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 idIRC1.Say('#test232',' ooooo');
end;

procedure TForm1.IdIRC1Connected(Sender: TObject);
begin
   memo1.Lines.Add('connected');
end;
0

Zadam pytanie. A czy IRC musi być koniecznie obsłużony przez Indy? Ponieważ jeżeli nie musi. To polecam komponent Vortex. W załaczniku masz potrzebne moduły. Ja sobie go obsłużyłem dynamicznie w jednym ze swoich projektów. I na pewno z wchodzeniem na kanał problemów żadnych nie ma.

A poza tym zdaje się, że jako jeden z nielicznych komponentów obsługuje prawidłowo Identd. Dzięki czemu nie masz przed nazwą usera znaku tyldy. A i wchodzenie przykładowo na QuakeNet, trwa o wiele szybciej. Jeżeli jednak upierasz się przy Indy, to pomóc może Ci tutaj raczej tylko @kAzek.

0

@Johnny_Bi: nie rozumiem o co pytasz? To art opisujący podstawy. Ja jednak w załączniku zamieściłem same potrzebne pliki.

0

@olesio - poszedł mi post zanim dokończyłem pisać. Chodziło mi o to czy nie wartałoby wspomnieć o artykule na 4p o tym komponencie (i może przy okazji go rozwinąć)?

0

Ok. To zrób to. Jeśli masz ochotę i czas. Ja niestety nie mam. A komponent nie jest bardzo trudny w użyciu. Jego kod jest w miarę przejrzysty. Przynajmniej w wersji, którą zapodałem. Są też najważniejsze rzeczy jak choćby zdarzenia skomentowane.

1

Zrobie sobie loga, wtedy bedziesz wiedzial wiecej

procedure TForm1.IdIRC1Raw(ASender: TIdContext; AIn: boolean; const AMessage: string);
begin
  Memo1.Lines.Add(AMessage)
end;

Obstawiam problem z loginem/haslem.

Ja tak sprawdzam poprawne logowanie na evencie OnRaw (dla twitch.tv)

if AMessage = 'NOTICE * :Login unsuccessful' then
begin
// 'Złe hasło albo login'
end
else if AMessage = 'NOTICE * :Error encountered while attempting login' then
begin
// 'Wystąpił nieznany błąd podczas logowania do czatu Twitch''a. Prawdpodobnie konto nie jest zweryfikowane.'
end
else if (Pos('connected to TMI', AMessage) > 0) or (Pos('host is testserver.local', AMessage) > 0) or (Pos(':HISTORYEND', AMessage) > 0)
then
begin
fUdanePolaczenie := True;
end

aaaa i sprawdz pm. Jakis nadgorliwy admin usunal moj topic -.-

0

Witamm kolegów I dziękuję za pomoc, rozwiazanie okazało się bardzo proste musiałem wypełnić pola w zakładce Properties:

RealName: Real name
Username: username

To wystarczyło aby irc połączył się prawidłowo z serwerem.

dodanie znacznika <code> - furious programming

1 użytkowników online, w tym zalogowanych: 0, gości: 1