Hab ich gemacht! Dankeschön
War mir unsicher bei der Benutzung von AnsiEndsStr etc.
Jedoch tut sich mir ein viel größeres Problem auf:
Wenn ein User eine Nachricht schreibt(was beim Beitreten automatisch passiert) wird folgendes ausgeführt:
Delphi-Quellcode:
procedure TForm1.ChatServerClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
i,j:Integer;
msg:String;
begin
msg := Socket.ReceiveText;
if AnsiEndsStr('ist dem Chat beigetreten',msg) = true then
begin
useronlineint := useronlineint + 1;
useronlinestr[useronlineint] := (StringReplace(msg, 'ist dem Chat beigetreten', '', [rfReplaceAll]));
memoUsers.Lines.clear;
for j := Low(useronlinestr) to High(useronlinestr) do
begin
memoUsers.Lines.add(useronlinestr[j]);
end;
end;
if AnsiEndsStr('hat den Chat verlassen',msg) = true then
begin
//memoUsers.Lines.add(StringReplace(msg, 'hat den Chat verlassen', '', [rfReplaceAll])); //ENTFERNT IHN BEIM VERLASSEN
useronlineint := useronlineint -1;
useronlinestr[useronlineint] := '';
memoUsers.Lines.clear;
for j := Low(useronlinestr) to High(useronlinestr) do
begin
memoUsers.Lines.add(useronlinestr[j]);
end;
end;
memoVerlauf.Lines.add(msg); //SENDET NACHRICHTEN AN ALLE USER
for i := 0 to ChatServer.Socket.ActiveConnections-1 do
ChatServer.Socket.Connections[i].SendText(msg);
end;
Das Problem ist jetzt folgendes :
Nehmen wir 3 User mit den Namen A, B und C.
Treten diese nacheinander bei so steht im Array folgendes :
useronlinestr
[1]A
[2]B
[3]C
Die Variable useronlineint(Die Anzahl der Personen online) ist nun 3. Verlässt User 2 den Chat und verbindet sich wieder geschieht folgendes:
Im Array steht nun [1] A [2] [3]C
Die Anzahl der User online ist 2.
Tritt er wieder bei. So wird sein Name in useronlineint+1 geschrieben. Also in Array-Slot 3.
Damit sind alle 3 User verbunden und C aus der Liste gelöscht.
Wie kann ich es realisieren, dass C, wenn Slot 2 leer ist sofort auf diesen aufrückt?
LG Rudinii