Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi (IdIRC) Nachrichten des aktuellen Channels erhalten ? (https://www.delphipraxis.net/46284-idirc-nachrichten-des-aktuellen-channels-erhalten.html)

Äfan 22. Mai 2005 01:55


(IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Hi,

Mal wieder IRC: Ich habe es jetzt endlich geschaft in einen IRC chat zu connecten und so... hat ja lange nicht hingehauen :? Etwas schreiben kann ich schon und das erscheint dann auch im chat, allerdings kann ich nicht lesen was die anderen schreiben, also es erscheint nur am anfang die übliche IRC-Connection text und danach kommt nix mehr, also schreibe ich so zu sagen blind :freak: Bei welchem Ereigniss muss ich das machen, dass er mir den text zeigt ? Habe es so gemacht:

Delphi-Quellcode:
procedure TForm1.IdIRC1Receive(Sender: TObject; ACommand: String);
begin
 richedit1.Lines.Add(Acommand);
end;
Aber da kommt wie gesagt nur der IRC-Connection text. Wie muss ichs richtig machen ?

Habe schon tuts angeschaut, aber entweder ist da zu wenig drin oder es is einfach zu kompliziert zu kapieren. Wär cool wenns sich auch jemand der schon mal so nen IRC Clienten gemacht hat, mal per MSN melden würde, also als ansprechpartner oda sowas :nerd:

thx

mfg

Mr Whoopee 22. Mai 2005 01:56

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
OnMessage... aber darüber gibts auch massig hier ;)

Äfan 22. Mai 2005 02:00

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Zitat:

Zitat von Mr Whoopee
OnMessage... aber darüber gibts auch massig hier ;)

Na danke für den link... glaub mir, ich habe schon gesuch, aber da finde ich nichts passendes... kannst ja selber schauen wenns willst :warn:

Aber thx wegen dem OnMessage.

Edit:

Wie bekomm ich die nachrichten ? :oops:

Delphi-Quellcode:
procedure TForm1.IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel; Content: String);
begin
  RichEdit1.Lines.Add(IdIRC1.?);
end;
Ich habe erst mit Replies probiert, aber da kommt bei keinem was raus :gruebel:

sECuRE 22. Mai 2005 08:56

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Hi,

wie wär's mal mit dem übergebenen Parameter Content? (engl: Inhalt)

cu

Äfan 22. Mai 2005 14:49

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
content gibts aber nicht

Matze 22. Mai 2005 14:51

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Zitat:

Zitat von Äfan
content gibts aber nicht

Delphi-Quellcode:
procedure TForm1.IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel; Content: String);
Im Prozedur-Kopf steht es doch. Diese Variable enthält den Text, einfach in der Prozedur verwenden.

Äfan 22. Mai 2005 15:37

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Oh :oops: OK jetzt gehts... Aber mal ein anderes Problem: Wenn ich jetzt eine Nachricht bekomme, erscheint dass in meinem Chat:

Zitat:

:UserImChat!~wwwUser@GE-24093.ipt.aol.com PRIVMSG #test :test
[UserImChat]:test
:UserImChat!~wwwUser@GE-24093.ipt.aol.com PRIVMSG #test :1
[UserImChat]:1
Gemacht habe ich das mit diesem code:

Delphi-Quellcode:
procedure TForm1.IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel; Content: String);
begin
  RichEdit1.Lines.Add('[' + AUser.Nick + ']:' + Content);
end;
Also die 2 und 4 zeile die ich bekomme is ok, aber wie kann ich verhindern, dass das :UserImChat!~wwwUser@GE-24093.ipt.aol.com PRIVMSG #test :test nicht kommt. Wenn ich was schreibe kommt in meinem Chat vor dem Text auch anstatt mein name nur so unwichtiges zeug und am anfang kommt im Java IRC so ein infotext, der in meinem chat ein totales chaos ist und im Java IRC garnicht erscheint bzw. nur bestimmte sachen und als richtiger text ohne so wirrwar:

Zitat:

:liberty.german-elite.net 332 Testuser #test :Das Topic suckt ;D
:liberty.german-elite.net 333 Testuser #test HansWurst
:liberty.german-elite.net 353 Testuser = #test :Testuser +UserImChat @BB @triple @eO @Rad @K0i|aeffchen @W45
:liberty.german-elite.net 366 Testuser #test :End of /NAMES list.
:liberty.german-elite.net 324 Testuser #test +ntr
:liberty.german-elite.net 329 Testuser #test 1116666985
PRIVMSG #test :Edit1
:UserImChat!~wwwUser@GE-24093.ipt.aol.com PRIVMSG #test :test
[UserImChat]:test
:UserImChat!~wwwUser@GE-24093.ipt.aol.com PRIVMSG #test :1
[UserImChat]:1
PRIVMSG #test :Testtext
PING :liberty.german-elite.net
PONG :liberty.german-elite.net
PING :liberty.german-elite.net
PONG :liberty.german-elite.net
Edit: Auch das Ping Pong wird im Java IRC nicht gezeigt.

Matze 22. Mai 2005 15:40

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Kann es sein, dass du im OnReceive das hier irgendwo verarbeitest?

Delphi-Quellcode:
procedure TForm1.IdIRC1Receive(Sender: TObject; ACommand: String);
begin
  RichEdit1.Lines.Add(ACommand);
end;

Äfan 22. Mai 2005 15:43

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Ja das ist vollkommen richtig:

Delphi-Quellcode:
procedure TForm1.IdIRC1Receive(Sender: TObject; ACommand: String);
begin
 richedit1.Lines.Add(Acommand);
end;

Matze 22. Mai 2005 15:50

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Dann schmeiß das raus, das zeigt dir nämlich die Server-Meldungen an. ;)

Äfan 22. Mai 2005 15:58

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Na dann geht aber nix mehr :cry:

Ich geb dir mal den ganzen code, sonst wird das glaube ich nix... Ahja das mit der userliste geht auch net :D...

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
IdIRC1.Nick := 'Testuser';
IdIRC1.Host := 'irc.*****.com';
IdIRC1.Port := 6667;  
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
IdIRC1.Connect();
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
IdIRC1.Join('#test');
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  IdIRC1.Say('#test',Edit1.Text);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  IdIRC1.Quit('Haut mal ab');
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 idirc1.Disconnect;
end;



procedure TForm1.IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel; Content: String);
begin
  RichEdit1.Lines.Add('[' + AUser.Nick + ']: ' + Content);
end;


procedure TForm1.IdIRC1Send(Sender: TObject; ACommand: String);
begin
  RichEdit1.Lines.Add(ACommand);
end;



procedure TForm1.IdIRC1Join(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel);
var
 i:integer;
begin
  for i := 0 to IdIRC1.Users.Count do
   begin
   ListBox1.Items.Add(AUser.Nick);
  end;
end;

procedure TForm1.IdIRC1Receive(Sender: TObject; ACommand: String);
begin
  RichEdit1.Lines.Add(Acommand)
end;

Matze 22. Mai 2005 16:03

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Wenn du diese Zeile entfernst

Delphi-Quellcode:
RichEdit1.Lines.Add(Acommand)
und neu kompilierst, sollte dies ganze Proedur entfernt werden. Sie hat keinen Einfluss auf das eigentliche chatten.

malo 22. Mai 2005 16:03

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Zitat:

Zitat von Äfan
Na dann geht aber nix mehr :cry:

Ich geb dir mal den ganzen code, sonst wird das glaube ich nix... Ahja das mit der userliste geht auch net :D...

Delphi-Quellcode:
procedure TForm1.IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel; Content: String);
begin
  RichEdit1.Lines.Add('[' + AUser.Nick + ']: ' + Content);
end;

procedure TForm1.IdIRC1Receive(Sender: TObject; ACommand: String);
begin
  RichEdit1.Lines.Add(Acommand) //das wegmachen, hier ist der "Fehler"
end;

Fällt dir was auf? Die zweite Prozedur schickt diese "seltsamen Nachrichten" an dein Richedit. Einfach die mit Kommentaren markierte Zeile entfernen.

Äfan 22. Mai 2005 16:52

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Ok funktioniert einwandfrei, bloß hab ich noch fragen:

1. Wie zeige ich jetzt den willkommenstext des server ?
2. Wie mache ich das mit den Formatierungen des Chats, also wenn ich nen text im chat farbig oder fett mache, dass dies auch so in meinem Chat erscheint ? Müsste ja gehen, habe ja ne richedit.
3. Wie mache ich die Userliste ? Mein versuch steht ja da oben im code.

Airblader 22. Mai 2005 16:59

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Delphi-Quellcode:
procedure TForm1.IdIRC1Join(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel);
var
i:integer;
begin
  for i := 0 to IdIRC1.Users.Count do
   begin
   ListBox1.Items.Add(AUser.Nick);
  end;
end;
Ich kenne die IdIRC Kompo zwar nicht auswendig, aber ich vermute, es muss mehr in dem Stil sein:

Delphi-Quellcode:
...
ListBox1.Items.Add(IdIRC1.Users[i].Nick);
...
Andernfalls addest du ja ständig den selben Namen

air

Äfan 22. Mai 2005 17:37

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Ne, geht net :(

Die Muhkuh 22. Mai 2005 17:47

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Zitat:

Zitat von Äfan
Ne, geht net :(

Mein Auto fährt auch nicht...


Was geht nicht? Fehlermeldung?

malo 22. Mai 2005 17:56

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Mal ganz davon ab, dass Spider recht hat, solltest du jedoch für jede Frage einen neuen Thread eröffnen. ;)

Äfan 22. Mai 2005 17:57

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Eine seite davor steht was ich will :zwinker: und was nicht geht is das:

Zitat:

Zitat von Airblader
Delphi-Quellcode:
procedure TForm1.IdIRC1Join(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel);
var
i:integer;
begin
  for i := 0 to IdIRC1.Users.Count do
   begin
   ListBox1.Items.Add(AUser.Nick);
  end;
end;
Ich kenne die IdIRC Kompo zwar nicht auswendig, aber ich vermute, es muss mehr in dem Stil sein:

Delphi-Quellcode:
...
ListBox1.Items.Add(IdIRC1.Users[i].Nick);
...
Andernfalls addest du ja ständig den selben Namen

air


Spoon 22. Mai 2005 19:08

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Um genau zu sein ist es:

Delphi-Quellcode:
ListBox1.Items.Add(IdIRC1.Users.Items[i].Nick);

MfG

Äfan 22. Mai 2005 19:56

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Also habe es jetzt so gemacht. Jetzt is es aber so, dass nur die liste geupdatet wird sobald ein aderere in den chat kommt obwohl ich diese schleife bei OnJoin und OnJoined gemacht habe... ich weiß echt nicht mehr weiter und im Java IRC werden in der userliste vor manchen namen @ oder + gezeigt, in meiner userliste nicht.

@Malo: Aber dann gibts hier nur noch IRC threads... warum kann man nicht so einen sammelthread machen !?

DGL-luke 22. Mai 2005 22:39

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
@ und + :

das @ steht auf jeden fall für die op-rechte, das kannst du sicher mit "nick.HasOpRights" oder irgendwas ähnlichem abfragen. das + wird ähnlich sein.

Spoon 22. Mai 2005 22:59

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Op und Voice geht hiermit:

Delphi-Quellcode:
IdIRC.IsOp('nickname')
bzw. mit IsVoice.

Das Voice erlaubt dir übrgingens in moderated channels (+m) etwas sagen zu können ;)


Immer wieder gern, Spoon

Äfan 22. Mai 2005 23:38

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
OK thx. Leider besteht immer noch das problem mit der userliste (2 beiträge vorher)

Spoon 23. Mai 2005 18:12

Re: (IdIRC) Nachrichten des aktuellen Channels erhalten ?
 
Dann beschreib doch bitte mal genau das Problem:

Wird keiner hinzugefügt?
Ist die komplette Liste leer?
Stehen nur manche drin?
Oder ist es was total anderes?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz