AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Befehle erstellen

Ein Thema von k4ni · begonnen am 26. Dez 2007 · letzter Beitrag vom 27. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#1

Befehle erstellen

  Alt 26. Dez 2007, 23:41
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:
if Msg.Text = '/kick '+Nickname then ... .. .. Danke
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#2

Re: Befehle erstellen

  Alt 26. Dez 2007, 23:51
schau dir mal die Funktion Delphi-Referenz durchsuchenCopy an
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#3

Re: Befehle erstellen

  Alt 27. Dez 2007, 00:04
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: Befehle erstellen

  Alt 27. Dez 2007, 00:10
SplitSplit und Delphi-Referenz durchsuchenTrim sind ebenfalls deine Freunde
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#5

Re: Befehle erstellen

  Alt 27. Dez 2007, 00:12
Zitat von himitsu:
if copy(Msg.Text, 1, 6) = '/kick ' then begin
name := copy(Msg.Text, 7, ...)
...
end
Nicht zu empfehlen... was ist, wenn der Befehl einmal lauten sollte "/abrakadabra" dann ist nichts mehr mit Copy(Text, 1, 6). 8)

Wenn dann lieber so:

Delphi-Quellcode:
if s[1] = '/then // Prüfen, ob Befehl!
  begin
    befehl := Copy(s, 2, Pos(' ', s) - 1); //dynamisch den Befehl abfragen
    if befehl = 'kickthen
      user := Copy(s, Pos(' ', s) + 1, Length(s)); //wenn Befehl "kick" dann schauen, welchen User
  end;
Das mit dem dynamischen Überprüfen solltest du dir zu Gemüte führen... versteht man nicht auf Anhieb
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#6

Re: Befehle erstellen

  Alt 27. Dez 2007, 00:19
' /kick k4ni' ist aber auch ein Befehl
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Befehle erstellen

  Alt 27. Dez 2007, 00:29
Zitat von fLaSh11:
Delphi-Quellcode:
if s[1] = '/then // Prüfen, ob Befehl!
  begin
    befehl := Copy(s, 2, Pos(' ', s) - 1); //dynamisch den Befehl abfragen
    if befehl = 'kickthen
      user := Copy(s, Pos(' ', s) + 1, Length(s)); //wenn Befehl "kick" dann schauen, welchen User
  end;
Das mit dem dynamischen Überprüfen solltest du dir zu Gemüte führen... versteht man nicht auf Anhieb
Also beim erstenmal hinschauen dacht ich mir "omg..." aber jetz blick ich das alles Danke,

Also sollte das 'k4ni" anzeigen wenn in Msg.Text "/kick k4ni" eingeb, oder nicht?

Delphi-Quellcode:
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 = 'kickthen
      user := Copy(s, Pos(' ', s) + 1, Length(s)); //wenn Befehl "kick" dann schauen, welchen User
  end;
  ShowMessage(user);
 end;
Tut es aber nicht
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#8

Re: Befehle erstellen

  Alt 27. Dez 2007, 00:34
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 = 'kickthen
      user := Copy(s, Pos(' ', s) + 1, Length(s)); //wenn Befehl "kick" dann schauen, welchen User
  end;
  ShowMessage(user);
end;
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Befehle erstellen

  Alt 27. Dez 2007, 00:40
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 = 'kickthen
      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;
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Befehle erstellen

  Alt 27. Dez 2007, 01:08
Danke!
Doch ich will ya noch einen grund angeben.
Also etwa so:
Syntax: /kick <name> <reason>
Delphi-Quellcode:
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 = 'kickthen
      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;
Doch ich kann Ja das ende des namens nichtmehr mit der länge des Strings festlegen weil es jetzt ja weitergeht.
Und die position des reasons fest zu stellen geht glaub auch nicht so wie ich das hab..
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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