![]() |
Befehle erstellen
Hey,
Ich bin schon eine zeit lang am überlegen wie, z.b mIRC oder xchat (oder andere irc clienten) diese befehle erkennen. z.B. "/kick k4ni lalalala" das würde dann den kick befehl erkennen, nach dem ersten leerzeichen den Nicknamen wen es kicken soll und nach dem nächsten leerzeichen den grund. Doch wie hält es diese aussagen auseinander? Wie könnt ich was selber mache, da ich ya zurzeit an einem chat programm arbeite? Ich hab es zurzeit nur etwa so:
Delphi-Quellcode:
Danke :)
if Msg.Text = '/kick '+Nickname then ... .. ..
|
Re: Befehle erstellen
schau dir mal die Funktion
![]() |
Re: Befehle erstellen
du mußt praktisch nur prüfen ob der Text mit dem Befehl beginnt und das nach dem Befehl als Befehlsparameter (z.B. den Namen) ansehn.
if copy(Msg.Text, 1, 6) = '/kick ' then begin name := copy(Msg.Text, 7, ...) ... end |
Re: Befehle erstellen
|
Re: Befehle erstellen
Zitat:
Wenn dann lieber so:
Delphi-Quellcode:
Das mit dem dynamischen Überprüfen solltest du dir zu Gemüte führen... versteht man nicht auf Anhieb :zwinker:
if s[1] = '/' then // Prüfen, ob Befehl!
begin befehl := Copy(s, 2, Pos(' ', s) - 1); //dynamisch den Befehl abfragen if befehl = 'kick' then user := Copy(s, Pos(' ', s) + 1, Length(s)); //wenn Befehl "kick" dann schauen, welchen User end; |
Re: Befehle erstellen
' /kick k4ni' ist aber auch ein Befehl ;)
|
Re: Befehle erstellen
Zitat:
Also sollte das 'k4ni" anzeigen wenn in Msg.Text "/kick k4ni" eingeb, oder nicht?
Delphi-Quellcode:
Tut es aber nicht :(
procedure TForm1.Button1Click(Sender: TObject);
var befehl, user, s: string; begin S := Msg.Text; if s[1] = '/' then // Prüfen, ob Befehl! begin befehl := Copy(s, 2, Pos(' ', s) - 1); //dynamisch den Befehl abfragen if befehl = 'kick' then user := Copy(s, Pos(' ', s) + 1, Length(s)); //wenn Befehl "kick" dann schauen, welchen User end; ShowMessage(user); end; |
Re: Befehle erstellen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var befehl, user, s: string; const befehlOffset = 2; // erstes zeichen eines befehls begin S := Msg.Text; if s[1] = '/' then // Prüfen, ob Befehl! begin befehl := Copy(s, befehlOffset, Pos(' ', s) - befehlOffset); //dynamisch den Befehl abfragen if befehl = 'kick' then user := Copy(s, Pos(' ', s) + 1, Length(s)); //wenn Befehl "kick" dann schauen, welchen User end; ShowMessage(user); end; |
Re: Befehle erstellen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var befehl, user, s: string; begin S := '/kick k4ni'; //oder eben MSG.text if s[1] = '/' then // Prüfen, ob Befehl! begin befehl := Copy(s, 2, Pos(' ', s) - 2); //DA IST JETZ NE 2 STATT NER 1 if befehl = 'kick' then user := Copy(s, Pos(' ', s) + 1, Length(s)); //wenn Befehl "kick" dann schauen, welchen User end; // ShowMessage('#'+befehl+'#'); hatte ich nur zum debuggen genutzt ShowMessage(user); end; |
Re: Befehle erstellen
Danke!
Doch ich will ya noch einen grund angeben. Also etwa so: Syntax: /kick <name> <reason>
Delphi-Quellcode:
Doch ich kann Ja das ende des namens nichtmehr mit der länge des Strings festlegen weil es jetzt ja weitergeht.
procedure TForm1.Button1Click(Sender: TObject);
var befehl, user, s, reason: string; begin S := MSG.text; if s[1] = '/' then // Prüfen, ob Befehl! begin befehl := Copy(s, 2, Pos(' ', s) - 2); //DA IST JETZ NE 2 STATT NER 1 if befehl = 'kick' then user := Copy(s, Pos(' ', s) + 1, Length(s)); reason := Copy(s, Pos(user, s) + 1, Length(s)); end; ShowMessage(user+' wurde gekickt, reason: '+reason); end; Und die position des reasons fest zu stellen geht glaub auch nicht so wie ich das hab.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:32 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