Moin!
Aua aua aua...
Deine Variable "nick" ist wohl global und daher fällt deine Methode schonmal flach, wenn sich 2 Nicks/clients direkt nacheinander anmelden, dann haut er die Nicks durcheinander bzw. nutzt den gleichen nick für beide.
Dann nochmal ein Zitat von dir:
Zitat von
delphman:
Dabei hat sich doch eigentlich nix verändert, außer der Wert der in die ListBox eingetragen wird !
. Wie bitte? Nix verändert? Schonmal geschaut was du nun in der ListBox hinten anhängst? Den ServerSocket. Hmm, warum nur ... frage ich mich. Den ServerSocket kann ich jederzeit und überall bekommen wenn ich ServerSocket1 schreibe - und der ist bei jedem User gleich - also, was soll der denn bei den Usern in der ListBox? Es hilft doch nix wenn überall das gleiche drinne steht. Und bisher ging ich in meinem Code immer davon aus das entweder TUserSocket oder TCustomWinSocket (abhängig welchen Stand man nimmt aus diesem Thread) in Items.Objects[] der ListBox befindet. Nun befindet sich durch dein Code aber TServerSocket drinne - und das ist doch wohl komplett was anderes. Nun ist denke ich mal auch klar, warum das Programm sagt:
Zitat von
Das Programm:
Ungültige Typumwandlung
, weil nunmal ein TServerSocket kein TCustomSocket und auch kein TCustomWinSocket ist.
Und warum überhaupt mit dem Timer? Warum? Warum bloss? Woher willst du wissen, das bis zum Ablauf des Timers der Nick angekommen ist? Und woher willst du wissen das es der Nick zu dem Socket ist? Du hast einen ServerSocket der haufenweise Clients haben kann.
Dein ganzes Programm sollte im Normalfall Event-driven sein, daher: reagiere auf Ereignisse und
handle nicht selber.
Zitat von
delphiman:
Vielleicht mit POS ? Aber dann müsste man das gesamte memo in einen string kopieren und wie krieg ich dann noch den nick raus selbst wenn ich 'hat den Raum betreten' gefunden habe ?
Wieso das gesamte Memo??? Du bekommst den String doch beim OnClientRead. Diese String untersuchen ob es diese "betreten"-Meldung ist und danach so oder so zum Memo hinzufügen (den gesamten String). Wenn es diese "betreten"-Meldung ist, dann kannst du ja den Nick rausholen und der ListBox zuführen.
Funktionen dazu: Pos(), Copy(), Delete()
MfG
Muetze1