Moin!
CR = Carriage Return - also Cursor zurück zum Anfang der Zeile
LF = Line Feed - also eine Zeile vorrücken.
Zusammen ergibt das dann einen Zeilenvorschub und der Cursor steht in dieser neuen Zeile ganz links...
Und wie ich es mir vorstelle:
Delphi-Quellcode:
Procedure ClientsocketRead...
Var
lSL : TStrings;
i : Integer;
lData : String;
Begin
lSL := TStringList.Create;
Try
lSL.Text := Socket.ReceiveText; // die StringList teilt das auf in die Zeilen
For i := 0 To lSL.Count-1 Do // nun die Zeilen nacheinander durchgehen und jeweils drum kümmern...
Begin
lData := lSL[i];
If ( Pos('JOIN', lData) > 0 ) Then
Begin
Delete(lData, 1, Pos('JOIN', lData)+5);
ListBox1.Items.Add(lData); // Chan unnötig, da nach dem Delete() lData nur noch den Chan enthalten kann...
End;
End;
Finally
lSL.Free;
End;
End;
Sowas in der Richtung. Keine Garantie das es auf Anhieb läuft, ist ebend mal so aus'm Hirn gequetscht...
Wichtig! ReceiveText() des Socket gibt keine Sicherheit das immer komplette Zeilen ankommen! Es ist sehr gut möglich das dein OnClientRead mehrfach aufgerufen wird, bevor du überhaupt eine komplette Zeile empfangen hast. Es kann also gut sein, das du ein "JOIN" empfängst, aber der Channelname der dahinter kommt, den bekommste erst beim nächsten Aufruf von OnClientRead! Darauf will ich noch hinweisen...
MfG
Muetze1