Ok, nachdem ich diesen Thread auch endlich gefunden habe, kann ich dir weiterhelfen.
Ich habe in meinem Chat Konstanten definiert, mit welchen festgestellt werden kann, was zur Zeit passiert. Dies muss dan alles mit Hilfe von Trennzeichen wieder aufgespaltet werden.
Für einen Text sieht das dann ungefähr so aus:
Wichtig: Die Codes sind nicht Copy-Paste-Codes
...SendText(IntToStr(TEXT)+cDelimiter+strText);
TEXT ist die Konstante, die bedeutet, dass ein Text folgt. cDelimiter ist die Konstante für das Trennzeichen und strText ist der Text der gesendet wird.
Fürs An/Abmelden eines Users könnte alles dann wie folgt aussehen:
Delphi-Quellcode:
...SendText(IntToStr(LOGON)+cDelimiter+strUsername);
...SendText(IntToStr(LOGOFF)+cDelimiter+strUsername);
Das kommt in jene Routine rein, wo ein User beim Server hinzugefügt bzw. gelöscht wird.
Ein Problem hast du nun aber noch. Wenn sich ein neuer Client anmeldet, dann muss dieser auch erfahren, wer bereits im Chat ist. Ich habe das Problem so gelöst. Sobald sich ein Client anmeldet, wird dem Benutzer eine Nachricht geschickt (mit einer Konstante wie oben), damit er weiß dass die Userliste kommt. Anschließend wird mit einer while-Schleife das User-Array abgegangen und Stück für Stück dem User gesendet. Du kannst dies auch anders lösen, indem du die User auf einmal sendest, aber das bleibt dir überlassen. Anschließend wird das Abschlusskommando gesendet, und dabei zur Kontrolle auch die Userzahl mitgegeben.
Ich hoffe ich habe dir irgendwie geholfen, wenn nicht dann frag nur.
Greetz
alcaeus
PS: Poste langen Code bitte nicht in den Beitrag, sondern als Dateien.