AGB  ·  Datenschutz  ·  Impressum  







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

Versenden von Variablen via Socket

Ein Thema von Rudinii · begonnen am 4. Mär 2016 · letzter Beitrag vom 6. Mär 2016
 
Rudinii
(Gast)

n/a Beiträge
 
#3

AW: Versenden von Variablen via Socket

  Alt 5. Mär 2016, 10:33
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
  Mit Zitat antworten Zitat
 

 

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 13:06 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