Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Irc mit Indy (https://www.delphipraxis.net/113729-irc-mit-indy.html)

MSSSSM 13. Mai 2008 19:18


Irc mit Indy
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, herzlich Willkommen!

In diesem Beitrag geht es um die Indy IRC-Komponente

Du kannst sie hier downloaden.
Mann, war ich doof, da sind doch noch die 9er!


Fangen wir an:

Zuerst, ziehe eine Iindy-IRC Komponente (IdIRC) auf das Formular

Dann sollte im Form.Create folgendes stehen:
Delphi-Quellcode:
IdIRC1.Nick:='MyNick';  // Legt den Nick fest

IdIRC1.Host:='irc.server.org';  // Gibt den Server an

IdIRC1.Port:=6667; //Irc Port
Damit legst du die Einstellungen für das Verbinden fest.

Nun, müssen wir uns nur noch verbinden:

Ziehe einen Button auf das Formular, und erstelle ein OnClick Ereignis
Caption sollte 'Verbinden' lauten

Folgender Code kommt hinein:
Delphi-Quellcode:
try //versuche
IdIRC1.Connect(); //zu verbinden
except //wenn Fehler
showMessage('Fehler beim Verbinden!'); //Meldung zeigen
end;
Du solltest einen Button erstellen, mit folgendem Code im Ereignis onClick:
Delphi-Quellcode:
IdIRC1.Join('#lima-city');
Nun kannst du schon Verbinden und einen Channel joinen.
Damit aber später aber auch Nachrichten angezeigt werden, solltest du noch eine Memo-Komponente auf das Formular ziehen.

Dann musst du noch zwei Ereignisse, OnReceive und OnMessage, hinzufügen

OnReceive (Bei mit hat es nur mit diesem zusätzlichen Ereignis geklappt):
Delphi-Quellcode:
Memo1.lines.add(ACommand); //zum Memo hinzufügen
OnMessage:
Delphi-Quellcode:
Memo1.lines.add(AUser.Nick+': '+Content); // Nachricht in Form Nick: Nachricht zum Memo hinzufügen


Jetzt kannst du schon Nachrichten empfangen, fehlt nur noch das Schreiben:

Ziehe eine Edit- und eine Button-Komponente auf das Formular.

Die Button-Komponente bekommt die Caption "Senden".

Die OnClick-Ereignis Routine lautet:

Delphi-Quellcode:
IdIRC1.Say('#CHANNEL',Edit1.Text); //Nachricht zum Channel schicken
Memo1.Lines.Add(IdIRC1.Nick+': '+Edit1.Text); //Zum Memo hinzufügen, denn durch eigene Nachrichten wird das OnMessage-Ereignis nicht ausgelöst
Damit kannst du jetzt Nachrichten empfangen und senden.

Schreibe in das OnClose Ereignis des Formulars:

Delphi-Quellcode:
IdIRC1.Disconnect(); //Zum stoppen


Zusatzcode:
Erstelle eine Listbox.
Erstelle das OnNames Ereignis und schreibe dorthin:
Delphi-Quellcode:
var
 i: integer;
//begin
for i:=0 to AUsers.Count-1 do //führe sooft aus wie User im Channel sind
ListBox1.Items.Add(AUsers.Items[i].Nick); //Adde diese zu ListBox
//end
Nun hast du schon einen funktionierenden IRC-Client.

Tipp: Baue einen IRC-Bot, du brauchst nur den Content bei OnMessage überprüfen!

FAlter 13. Mai 2008 19:24

Re: Irc mit Indy
 
Hi,

:kiss: danke, darauf hab ich schon immer gewartet. Ich habe es mal vor einer Ewigkeit alleine probiert, aber irgenwie hat es nicht geklappt.

Aber ist das nicht eher ein Tutorial?

Egal, ich füge es erst einmal den Lesezeichen hinzu, falls ich mal Langeweile habe.

Mfg
FAlter

MSSSSM 14. Mai 2008 13:37

Re: Irc mit Indy
 
Das dies ein Tutorial ist habe ich auch schon gedacht :lol:
Aber letzendlich wollte ichs ja nicht noch einmal neu machen!

Dann ist es leicht einen bot zu machen!
z.B.: Befehl !learn BEFEHL ANTWORT


mfg

FAlter 16. Mai 2008 11:41

Re: Irc mit Indy
 
Hi,

irgendwie heißen die Events bei mir anders. OnReceive und OnMessage gibts gar nicht.

Mfg
FAlter

MSSSSM 16. Mai 2008 12:42

Re: Irc mit Indy
 
benutzt du Indy 10?

Und wirklich die IdIrc Komponente? :twisted:

:gruebel:

Aber wenn sonts nix ist....

mfg


Antwortet doch mal was mehr :lol:

FAlter 16. Mai 2008 12:51

Re: Irc mit Indy
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ja, ich habe bei der TurboDelphi-Installation definitiv Indy 10 ausgewählt, und in D2k5 hab ich Version 10 manuell installiert und es stimmt mit TurboDelphi überein.

Ansonsten noch ein Problem, aber das liegt wohl eher an Indy. Wenn ich OnPrivateMessage / OnNotice usw. verwende, wird die Nachricht immer beim letzten Buchstaben vor dem ersten Leerzeichen abgeschnitten. Hier mal mein Beispiel, wo der Bot alles einfach zurückschickt... In OnRaw steht es drin, aber dann müsste ich das ganze ja selbst zerpflücken...

[edit] Als Anhang... [/edit]

Wichtig noch:

Fast immer sollte man UserName und evtl. RealName zuschicken, auch bei öffentlichen Servern, da bleibt dann das Passwort leer. Also entsprechende Eigenschaften setzen. Vorher hab ich nur Access denied gekriegt, von allen Servern, bei denen ichs probiert habe.

Mfg
FAlter

JonnyGuitar 16. Mai 2008 13:04

Re: Irc mit Indy
 
servus,

ich habe auch definitiv indy 10 installiert in verbindung mit delphi 2007.
auch bei mir fehlen die besagten events.


mfg Jonny

DP-Maintenance 16. Mai 2008 13:06

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Tutorials und Kurse" verschoben.
Das passt hier besser

MSSSSM 16. Mai 2008 13:21

Re: Irc mit Indy
 
tipp: nimm die explode-funktion aus der CodeLibrary!

Ich hab das ganze mit D7 vllt. liegts daran, dass meine eigl. eine Prof. ist? :evil:

mfg

Flamemaster 16. Mai 2008 13:23

Re: Irc mit Indy
 
bei mir kennt er merkwürdigerweise "IdIRC1.Nick" nicht.

Alles andere funktioniert.
weis evtl. jemand was man da machen kann?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:33 Uhr.
Seite 1 von 4  1 23     Letzte »    

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