Deine "Vereinfachung" ist doch keine Vereinfachung. Wenn du sagst das die Befehle kein Leerzeichen haben, dann machst du einfach:
Delphi-Quellcode:
var
command : string;
begin
command := Copy(input, 1, Pos(' ', input) - 1);
Dann hast du schon mal den Befehl und den Nick bekommst du ähnlich einfach:
Delphi-Quellcode:
var
command : string;
reciever : string;
message : string
delimToCommand : Integer;
delimToReciever : Integer;
begin
delimToCommand := Pos(' ', input); // Dort ist das erste Leerzeichen
delimToReciever := PosEx(' ', input, delimToCommand + 1); // Da das zweite
command := Copy(input, 1, delimToCommand - 1);
reciever := Copy(input, delimToCommand + 1, delimToReciever - delimToCommand - 1);
message := Copy(input, delimToReciever, Length(input) - delimToReciever);
Man könnte auch
Explode verwenden, aber das könnte zu übereifrig werden, wenn weitere Leerzeichen kommen.
Übrigens habe ich deshalb auch vorgeschlagen mehrere Zeilen zu nehmen. Dann hättest du einfach machen können:
Delphi-Quellcode:
var
msg : TStrings;
command : string;
reciever : string;
message : string
begin
msg := TStringList.Create;
try
msg.Text := input;
command := msg[0];
msg.Delete(0);
reciever := msg[0];
msg.Delete(0);
message := msg.Text;
finally
msg.Free;
end;
Vielleicht geht das auch schöner ohne die Zeilen zu löschen.
MfG
Fabian