Ok, das mit dem COUNT ist eigentlich nur Spielerei ... damit wollte ich dem sendenden Client zurückmelden, an wieviele Clients die Nachricht geschickt wurde. Ist also erstmal überflüssig
Delphi-Quellcode:
{...}
// Senden
// Wir werden jetzt alle Verbindungen prüfen, ob wir denen was senden müssen
// dazu finden wir in TServerWinSocket( Sender ).ActiveConnections die Anzahl der aktiven Verbindungen
for idx := 0 to TServerWinSocket( Sender ).ActiveConnections - 1 do
begin // Das begin und end ist nicht notwendig, dient nur der Übersichtlichkeit
// ist TO leer, dann wird wird die Nachricht an alle geschickt
if ( ( o.[ 'TO' ] = '' ) or
// oder steht da was drin, dann geht es nur an diesen Benutzer
// die Userabfrage muss jetzt den Benutzer zu dem Socket aus
// TServerWinSocket( Sender ).Connections[ idx ]
// liefern also irgendwie sowas
// function GetUserNameFromSocket( Socket : TCustomWinSocket ) : string
( o.S[ 'TO' ] = GetUserFromSocket( TServerWinSocket( Sender ).Connections[ idx ] ) ) ) and
// aber es soll nicht an die Verbindung geschickt werden, die die Nachricht abgeschickt hat
( Socket <> TServerWinSocket( Sender ).Connections[ idx ] ) then
begin
TServerWinSocket( Sender ).Connections[ idx ].SendText( o.AsJSON );
end;
end; { --- hier endet die for-Schleife --- }
// Wir schicken dem Absender die Nachricht wieder zurück, damit der weiß, dass wir alles erledigt haben
// Damit der Client weiß, dass es sich um eine Rückantwort handelt schreiben wir noch etwas in die Nachricht
o.S[ 'SEND' ] := 'OK';
// und auf die Reise schicken
Socket.SendText( o.AsJSON );
end;
Ja, es wird einfach nur die
unit superobject eingebunden. Da braucht (gottseidank) nichts installiert werden.
Wenn du diese
Unit nur in deinem Projekt nutzen möchtest, dann kann st du die datei "superobject.pas" einfach in dein Projekt-Ordner kopieren.
Willst du immer wieder auf diese
Unit zurückgreifen, dann sollte die Datei in einem Ordner stehen, der laut Bibliothekspfad auch eingebunden wird. Schau einfach in deiner
IDE unter "Tools->Optionen->Bibliothek -
Win32->Bibliothekspfad->[...]
Mit einem Klick auf den Button mit den drei Punkten (nein, der ist nicht gelb
) kannst du auch weitere Pfade hinzufügen.
Bei mir sind die unter "%PUBLIC%\Dokumente\superobject" gespeichert und dann habe ich den Pfad zur Bibliothek hinzugefügt.