Moin und

im Forum!
opactium hat folgendes geschrieben: |
wie bekomme ich jetzt aber den index raus? also wenn jemand connected sieht das so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure Tfrmmain.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin ListView1.Items.Add; ListView1.Items.Item[ListView1.Items.Count-1].Caption := socket.RemoteAddress; ListView1.items.item[ListView1.items.count -1].SubItems.Add(inttostr(frmmain.ServerSocket1.Socket.ActiveConnections-1)); end; |
wie man sieht mache ich das ziemlich umstaendlich mit dem index, aber es funktioniert. jetzt aber beim disconnect des clients kann ich den index ja nicht so herausfinden. wie krieg ich ihn da heraus? |
Es ist nicht besonders "schlau", den Index einer Verbindung im
.Connections[]-Array des
TServerSocketals Kennung zu verwenden.

Das Problem ist nämlich, dass sich dieser auch ändern kann (und wird, wie du bereits beim Disconnect festgestellt hast).
Eine Lösung besteht darin, die Referenz auf den
TCustumWinSocketals Kennung zu verwenden, denn dieses Objekt ist für eine bestimmte Verbindung garantiert immer gleich.

In
diesem Tutorial wird das z.B. so gemacht.

Weiterhin kann es sicher nicht schaden, mal
hier einen Blick reinzuwerfen.
Übertragen auf dein TListView: ein
TListItemhat die Eigenschaft
.Data, dort kannst du z.B. diese Referenz ablegen.
cu
Narses
There are 10 types of people - those who understand binary and those who don´t.