Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IRC-Nachrichten (https://www.delphipraxis.net/55425-irc-nachrichten.html)

Coldice111 20. Okt 2005 17:25


IRC-Nachrichten
 
Hi!
Ich arbeite zurzeit an einem kleinen irc client für mich!
Er connectet alles wunderbar aber wie kann ich die nachrichten empfangen per memo und wie kann ich sie schicken mit einem Edit?
Ich habe INDY 10
cu coldice111

Net7 20. Okt 2005 17:32

Re: IRC-Nachrichten
 
Wäre es dir auch recht wenn ich es dir über Client socket zeigen würde??

Weil mit Indy arbeite ich grundsätzlich nicht, sind mir zu überladen.

Coldice111 20. Okt 2005 17:34

Re: IRC-Nachrichten
 
muss ich das dann alles nochmal neu schreiben oder kann ich nur für messages clientsocket nehmen und idirc connect nehmen ?

Net7 20. Okt 2005 17:49

Re: IRC-Nachrichten
 
Zitat:

Zitat von Coldice111
muss ich das dann alles nochmal neu schreiben oder kann ich nur für messages clientsocket nehmen und idirc connect nehmen ?

Antwort Ja.


Aber wäre dir das eine Hilfe??
Delphi-Quellcode:
procedure TForm1.IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel; Content: String);

begin
      Memo1.lines.Add(content);
end;

Coldice111 20. Okt 2005 17:50

Re: IRC-Nachrichten
 
onmessage hat indy 10 leider nicht :(
gibt es noch eine Möglichkeit nachrichten zu empfangen/senden?

Net7 20. Okt 2005 17:59

Re: IRC-Nachrichten
 
Zitat:

Zitat von Coldice111
onmessage hat indy 10 leider nicht :(
gibt es noch eine Möglichkeit nachrichten zu empfangen/senden?

Ehrlich gesagt, keine Ahnung, bei den Indys kenne ich mich nicht so aus. Da ich eher die TSockets nutze.

Coldice111 20. Okt 2005 18:02

Re: IRC-Nachrichten
 
schade :(

Net7 20. Okt 2005 18:05

Re: IRC-Nachrichten
 
Zitat:

Zitat von Coldice111
schade :(

Warum willst du eigendlich die Indys benutzen?? Soviel Schreibkram mit den sockets ist das garnicht.

Coldice111 20. Okt 2005 18:16

Re: IRC-Nachrichten
 
Wenn du es mir erklären würdest wie es alles mit clientsocket geht dann würde ich es machen :D

Net7 20. Okt 2005 18:17

Re: IRC-Nachrichten
 
Zitat:

Zitat von Coldice111
Wenn du es mir erklären würdest wie es alles mit clientsocket geht dann würde ich es machen :D

ok läßt sich machen

//Edit werde dir mal schnell was zusammenclicken ;) und kommentieren.

Coldice111 20. Okt 2005 18:25

Re: IRC-Nachrichten
 
ok danke :D

Net7 20. Okt 2005 19:12

Re: IRC-Nachrichten
 
Liste der Anhänge anzeigen (Anzahl: 1)
So geschafft... :-D

Delphi-Quellcode:

 
var
  Form1: TForm1;
  Anmeldung:string;
  NachrichtvonServer:string;
  Nachrichtanserver:string;
  implementation

{$R *.dfm}


 procedure TForm1.FormCreate(Sender: TObject);
begin

// Das ist der Anmeldestring damit der IRCserver weiß wer du bist
// sonst schmeißt er uns wieder raus
Anmeldung:='USER delphipraxis123 "" "localhost" :delphipraxis123'+char(13)+'NICK delphipraxis'+char(13);

{
Das Char(13) ist der Druck auf die Entertaste das must du mitsenden.
Das verlangt das IRC-Protokoll.
Ansonsten versteht dich der IRC server nicht.
}

edit1.Clear;
memo1.Clear;

end;





// Verbindung aufbauen
procedure TForm1.Button1Click(Sender: TObject);
begin
       if clientsocket1.Active=false then
        begin
        clientsocket1.Host:='ircchat.freenet.de'; //Chatserver
        clientsocket1.Port:=6667;                //Port
        clientsocket1.Active := true;             //Verbindung öffnen
        end;
end;


//sende Anmeldestring wenn Verbindung aufgebaut, an IRC server senden.
procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
     // den Anmeldestring senden
     clientsocket1.Socket.SendText(anmeldung);
end;


//Nachricht empfangen
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin

   //Nachricht aus dem Socket lesen ,also das was vom Server kommt
   Nachrichtvonserver:= clientsocket1.Socket.ReceiveText;

   Memo1.Lines.Add(Nachrichtvonserver);
end;



// Text verschicken
procedure TForm1.Button2Click(Sender: TObject);
begin
      // Text in die Variable Entertaste simulieren ;)

      Nachrichtanserver:=edit1.Text+char(13);

       edit1.Clear;

       // eigene Nachricht anzeigen
       Memo1.Lines.Add(Nachrichtanserver);



      // Text verschicken
      if clientsocket1.Active=true then
      begin
         clientsocket1.Socket.SendText(Nachrichtanserver) ;
      end;
end;




// Verbindung trennen
procedure TForm1.Button3Click(Sender: TObject);
begin
clientsocket1.Active:=false;
end;

end.
Beispiel liegt bei mit funktionierendem Clienten. Wenn auch primitiv. :mrgreen:

Wenn du fragen hast... na du weißt ja :)

Coldice111 20. Okt 2005 19:50

Re: IRC-Nachrichten
 
Hi!
Funktioniert alles nur noch eine frage wie kann mann es auch machen das mann NICHT Privmsg... eingeben muss sondern einfach nur "Hallo"???
cu coldice111

PS DANKKKEEEEEEEEEEEEEEEEEEEEEE

Net7 20. Okt 2005 20:04

Re: IRC-Nachrichten
 
Zitat:

Zitat von Coldice111
Hi!
Funktioniert alles nur noch eine frage wie kann mann es auch machen das mann NICHT Privmsg... eingeben muss sondern einfach nur "Hallo"???
cu coldice111

PS DANKKKEEEEEEEEEEEEEEEEEEEEEE

Ohh das ist einfach.

Mal als kleine Denkhilfe :mrgreen:

Du hast doch sicherlich schon einige IRC Clients gesehen, und hast festgestellt das du zb.

/join #channel oder /nick haste nicht gesehen eintippen mustest, also bei Befehlen immer ein '/' davor stellen must.

Daraus folgt, du kannst immer ein Privmsg.... vorsetzen ausser es würde ein bestimmtes Zeichen auftauchen zb. '/'. im Editfeld, somit wüstest du das du nicht Privmsg... setzen darfst. :roll:

Mfg Net7

Coldice111 21. Okt 2005 09:31

Re: IRC-Nachrichten
 
Kapier ich nicht also muss ich immer PRIVMSG vorsetzen ;(?

Net7 21. Okt 2005 13:57

Re: IRC-Nachrichten
 
Zitat:

Zitat von Coldice111
Kapier ich nicht also muss ich immer PRIVMSG vorsetzen ;(?


Naja, nur mal als primitives Beispiel

Delphi-Quellcode:

// Text verschicken
procedure TForm1.Button2Click(Sender: TObject);
begin


        //wenn an der ersten stelle des Strings '/' auftaucht
       // zb. bei Befehlseingabe joinen usw. nun musst du aber ein '/' vorsetzen
       // also /join ... bei Befehlen.
        if edit1.Text[1]='/' then
        begin
           Nachrichtanserver:=edit1.Text+char(13);
           Delete(Nachrichtanserver, 1, 1); // löscht das '/'
           edit1.Clear;
        end
          else   // wenn nicht, dann PRIVMSG vorsetzen
            begin
                 Nachrichtanserver:='PRIVMSG #freakzroom :'+edit1.Text+char(13);
                  edit1.Clear;
             end;


       // eigene Nachricht anzeigen
       Memo1.Lines.Add(Nachrichtanserver);



      // Text verschicken
      if clientsocket1.Active=true then
      begin
         clientsocket1.Socket.SendText(Nachrichtanserver) ;
      end;
end;

Natürlich kannst du das auch in einer procedure packen und alles mögliche noch abfragen. Es wäre auch nicht schlecht wenn der Raum den du gewählt hast, auch automatisch gesetzt wird.

imag 18. Jun 2008 15:00

Re: IRC-Nachrichten
 
So, um diese Frage zu klaeren:
Messages an einen Channel sind ja auch nur PivMsgs an den Channel...
Und, TADAAAAAA, bei Indy10 gibt es ein Event OnPrivateMessage!
Da kriegt man dann auch die Channelmessages...
Hab auch ne Weile gebraucht bis ich das hatte...


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 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