![]() |
Re: Server disconnectet Client
Moin!
Zitat:
Du musst dich von der Vorstellung trennen, beim Connect des Clients dessen NickName zu erfahren - das geht nur im nachhinein. Du musst dir in deinem Programm eine solche Struktur vorhalten, das du den Nicknamen er später erfährst - es geht nicht anders. In meinem oben verlinkten Chat wird das ganze zwar über Streams gelöst aber trotzdem wird dort der NickName auch erst später übermittelt. Trotzdem ist es noch schnell genug als das es nicht auffällt. MfG Muetze1 |
Re: Server disconnectet Client
Ok, du hast Recht ! :thumb:
Gibs nicht ne andere Möglichkeit den Nicknamen "einfach" mit in die ListBox zu bekommen, ohne eine extra Class zu erstellen ? Wenn nicht dann lass ich dieses Feature halt weg ! ;) |
Re: Server disconnectet Client
Moin!
Zitat:
... dann hast du nämlich folgendes: 1. in der Procedure hast du den Socket übergeben bekommen 2. du hast den nick ausgelesen aus dem mit ReceiveText empfangenen 3. du hast die ListBox wo hinten bei Items.Objects[] der Socket drinne steht der dir übergeben wurde 4. Wenn du den Eintrag in 3. gefunden hast, dann kannst du doch einfach seinen Text abändern. MfG Muetze1 |
Re: Server disconnectet Client
Zitat:
Wenn ein Client sich einloggt sendet dieser ja automatisch 'MrX hat Raum betreten'. Nun müsste man doch eigentlich nur ein einziges Mal (für jeden Clienten) diese achricht abfangen und in die Listbox schreiben !? |
Re: Server disconnectet Client
Moin!
Zitat:
Aber dann lass uns doch mal überlegen. Wir müssten uns doch einfach eine Situation raussuchen die nur einmal auftritt und am besten kurz nach dem Verbinden. Also mir fällt da z.B. "Mrx hat den Raum betreten" ein - warum achtest/wartest du nicht auf den Spruch und holst dir da den Nick raus und fügst ihn zur Listbox hinzu - nochmal sollte der Spruch ja nicht kommen. MfG Muetze1 |
Re: Server disconnectet Client
Genau daran hab ich auch schon gedacht.
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 ? wie meinst du das, den nick rausholen ? |
Re: Server disconnectet Client
Hi,
nach langem probieren habe ich es jetzt geschafft ! :party: Sobald sich ein User einloggt, wird der Nick mit in der ListBox angezeigt ! Hier der Source:
Code:
Sobald sich ein User einloggt, geht der Timer "an". Und im Timer passiert folgendes:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket); var wert, wert1, ib : integer; begin edit10.text := 'User eingeloggt: ' + IntToStr(ServerSocket1.Socket.ActiveConnections); lTemp := Socket.RemoteHost + ' ' + Socket.RemoteAddress; timer2.Enabled := true; end;
Code:
Sobald ein Client etwas sendet wird die Nachricht abgefangen und das Item der ListBox zugefügt.
procedure TForm1.Timer2Timer(Sender: TObject);
begin if nick <>'' then begin nick:=Copy(nick, 1, 6); test := ltemp + ' ' + nick; ListBox1.Items.AddObject(test, ServerSocket1); timer2.Enabled := false; end; end; Nun gibt es wieder ein neues Problem: Das User kicken funktioniert jetzt nicht mehr ! :wall: Fehlermeldung: Ungültige Typumwandlung. Dabei hat sich doch eigentlich nix verändert, außer der Wert der in die ListBox eingetragen wird ! :gruebel: Echt schlimm: ein Problem gelöst, kommt ein neues ! :roll: |
Re: Server disconnectet Client
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:
Zitat:
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:
Funktionen dazu: Pos(), Copy(), Delete() MfG Muetze1 |
Re: Server disconnectet Client
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Server disconnectet Client
Moin!
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Index ist dabei der Index des Eintrages den du ändern möchtest.
ListBox1.Items[Index] := 'Was auch immer';
MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 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