![]() |
Aus ListBox löschen...
Hi,
ich habe ein kleines Problem: Ich habe einen Chat programmiert. Jetzt will ich noch in einer ListBox die Namen der Chatteilnehmer anzeigen, d.h. wenn sich ein Client connected sendet er seinen Nick und der wird dann der ListBox hinzugefügt. Logischer Weise will ich wenn der Clinent Disconnected, dass sein Name aus der ListBox gelöscht wird. Kann mir jemand sagen wie ich das anstelle? MfG Matthias Volland |
Moin Matthias,
TListBox.Items.Delete(...) |
Das habe ich auch schon probiert, aber das problem ist das ich da die nummer des Namens in der ListBox finden muss, weil dieser Befehl ja eine Zahl benötigt!
MfG Matthias Volland |
Hallo,
dann schau Dir noch (Item)Index an. Grüsse, Daniel :hi: |
hä, das versteh ich jetzt irgendwie nicht! :roll:
ich hab mal in der code library geguckt und da ist ein beitrag von dir drin, wie man eine listbox durchsichen kann und hab versucht das in meinen quelltext einzubauen, aber das hat nicht funktioniert! ich schreib hier grad mal den code, vielleicht weist du ja was falsch ist. Also der Client schickt beim disconnecten folgenden code:
Delphi-Quellcode:
und der Server macht dann folgendes
procedure TForm1.ClientSocket2Disconnect(Sender: TObject;
Socket: TCustomWinSocket); begin ClientSocket2.Socket.SendText(Edit1.Text); //Edit1 beinhaltet den Nickname end;
Delphi-Quellcode:
MfG Matthias Volland
procedure TForm1.ServerSocket2ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket); var nick: string; i: integer; begin nick:=Socket.ReceiveText; for i:=0 to ListBox2.Items.Count -1 do begin if ListBox2.Items.Strings[i] = nick then ListBox2.Items.Delete(i); end; end; |
Moin Daniel,
fast. TListBox.Items.IndexOf(...) |
Sorry, vielleicht bin ich ja etwas dumm :oops: , aber ich raffs immer noch nicht! es wäre sau nett wenn du die ganze zeile mal schreiben könntest wo do meinst dass sie falsch ist! :roll:
Noch mal Danke! MfG Matthias Volland |
Moin Matthias,
statt
Delphi-Quellcode:
geht's auch so:
procedure TForm1.ServerSocket2ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket); var nick: string; i: integer; begin nick:=Socket.ReceiveText; for i:=0 to ListBox2.Items.Count -1 do begin if ListBox2.Items.Strings[i] = nick then ListBox2.Items.Delete(i); end; end;
Delphi-Quellcode:
Abgesehen davon, dass Deine Version auch funktionieren müsste.
procedure TForm1.ServerSocket2ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket); var i: integer; begin i := ListBox2.Items.IndexOf(Socket.ReceiveText); if i <> -1 then ListBox2.Items.Delete(i); end; Übrigens kannst Du statt
Delphi-Quellcode:
auch
ListBox2.Items.Strings[i]
Delphi-Quellcode:
schreiben.
ListBox2.Items[i]
[EDIT] Falsch ist Deiner Abfrage eigentlich nichts, nur dass die Schreibweise exakt übereinstimmen muss, bei IndexOf wird Gross-/Kleinschreibung nicht unterschieden. [/EDIT] |
Hi, danke für die schnelle Hilfe! :)
MfG Matthias Volland |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 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