![]() |
IRC-Client über IdTelnet
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Ich versuche grad einen simplen IRC-Client mittels der Telnet-Komonente von Indy zu programmieren. Bis jetzt habe ich eine Form (siehe Anhang) mit zwei ComboBoxen, einem Edit und einem Memo. Ins Memo kommt die Aus- und Eingabe, in der ersten ComboBox steht der Befehl (zB NICK, JOIN oder PRIVMSG), in der zweiten ComboBox das Ziel (zB ein Channel oder ein User) und in der Edit steht der Text geführt von einem Doppelpunkt. Ich baue per TIdTelnet (Indy Telnet) die Verbindung zum Server auf und sende die Befehle wie folgt:
Delphi-Quellcode:
Die Daten vom Server empfange ich so:
procedure TForm1.CommandSending(Sender: TObject; var Key: Char);
var tmp: String; begin if (Key = #13) and (Telnet1.Connected) then begin tmp := ComboBox1.Text + ' ' + ComboBox2.Text + ' ' + Edit1.Text; Telnet1.WriteLn(tmp); //Hier der eigentlich Befehl Memo1.Lines.Add('*** SEND: '+tmp); if (ComboBox1.Text <> '') and (ComboBox1.Items.IndexOf(ComboBox1.Text) = -1) then ComboBox1.Items.Add(ComboBox1.Text); if (ComboBox2.Text <> '') and (ComboBox2.Items.IndexOf(ComboBox2.Text) = -1) then ComboBox2.Items.Add(ComboBox2.Text); Key := #0; Edit1.Text := ':'; Edit1.SelStart := 1; Edit1.SelLength := 0; end else if (Key = #13) and (not Telnet1.Connected) then Memo1.Lines.Add('*** NOT CONNECTED'); end;
Delphi-Quellcode:
Und das Programm beendet so:
procedure TForm1.Telnet1DataAvailable(Sender: TIdTelnet;
const Buffer: String); begin Memo1.Lines.Add(Buffer); end;
Delphi-Quellcode:
So, nun aber zu den Fragen:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i: Integer; begin if Telnet1.Connected then begin Telnet1.WriteLn('QUIT :'); Memo1.Lines.Add('*** QUITTING'); while Telnet1.Connected do for i := 0 to 10000 do Application.ProcessMessages; end; end; 1. Mache ich in den genannten Codesegmenten alles richtig? Also sendet man den Text per WriteLn, oder doch eher über SendCmd? Und geht das Beenden nur auf so umständlichem Wege, oder gibt es da eine bessere Lösung? 2. Wie kann ich jetzt auf Text vom Server reagieren? ZB: Wie kann ich einen Ping der Form PING :12345678 pongen? Oder wie kann ich die Fehlernummern abfragen? Nick existiert hat IMHO den Fehler nummer 433 denn wenn ich einen existierenden Nick benutzen will, passiert das:
Code:
So das wärs dann mal. Ich hoffe ihr könnt mir helfen.
:online2.no.quakenet.org 433 * faux :Nickname is already in use.
Danke schon mal. Grüße Faux |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz