AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IRC Userliste

Ein Thema von RedShakal · begonnen am 27. Jul 2009 · letzter Beitrag vom 27. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2      
RedShakal
(Gast)

n/a Beiträge
 
#1

IRC Userliste

  Alt 27. Jul 2009, 01:59
Moin moin,

Ich habe ein etwas komisches Problem mit Delphi. Meine IRC Unit ist nach dem Indy Irc Tutorial aufgebaut.

Server Connecten -> Channel betretten -> Userliste anzeigen.

Funktioniert auch alles soweit prima, leider wird diese Userliste aber nicht geupdatet wenn ein Spieler kommt / geht.

Delphi-Quellcode:
procedure TForm3.ChatNames(Sender: TObject; AUsers: TIdIRCUsers;
  AChannel: TIdIRCChannel);
var
  i : byte;
begin
  for i:=1 to AUsers.Count-1 do
  Nicknamen.Items.Add(AUsers.Items[i].Nick);
end;
Die Procedure wird ja nur aufgerufen wenn ich den Channel betrette.

Wie muss ich den IRC Client einstellen das die Userliste regelmäßig geupdatet wird?
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
198 Beiträge
 
Delphi XE Professional
 
#2

Re: IRC Userliste

  Alt 27. Jul 2009, 10:40
Ich kenn die Indy IRC-Komponente jetzt nicht so genau, ist 200 Jahre her, dass ich mich mit der mal beschäftigt habe.

Ich denke, Du wirst während einer laufenden Verbindung auf Joins, Quits und Parts reagieren müssen und Deine Userliste dabei aktualisieren. Die komplette Liste wird nur beim Betreten eines Channels vom Server geschickt.

Gruß,
SirTwist
  Mit Zitat antworten Zitat
RedShakal
(Gast)

n/a Beiträge
 
#3

Re: IRC Userliste

  Alt 27. Jul 2009, 12:39
Ich versuche es zurzeit so:

Delphi-Quellcode:
procedure TForm3.ChatJoin(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel);
begin
  Nicknamen.Items.Add(AUser.Nick);
  ChatText.Lines.Add('[' + TimeToStr(time) + '] '+AUser.Nick+' hat die Lobby betreten.');
end;

Delphi-Quellcode:
procedure TForm3.ChatQuit(Sender: TObject; AUser: TIdIRCUser);
begin
 // Nicknamen.Items.Delete(AUser.Nick);
  ChatText.Lines.Add('[' + TimeToStr(time) + '] '+AUser.Nick+' hat die Lobby verlassen.');
end;

Aber das wirft leider Probleme auf. Beim join entsteht immer eine Leerzeile zwischen den alten Nicks und dem neu hinzugefügten der sich auch mit Itemindex-1 nicht löschen lässt.

Bei der Löschfunktion kann man leider nur einen Indexwert angeben. Der Indexwert ist aber leider unbekannt, was bedeutet ich brauche eine möglichkeit um dem namen einen Index zuzuordnen.

Das ist sicher wieder nur einer dieser kleinen irgentein Wort vergessen fehler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#4

Re: IRC Userliste

  Alt 27. Jul 2009, 13:31
Leerzeile: keine Ahnung:

Index: Items bietet dir auch Funktionen zum Suchen ... z.B. Nicknamen.Items.IndexOf
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
198 Beiträge
 
Delphi XE Professional
 
#5

Re: IRC Userliste

  Alt 27. Jul 2009, 13:36
Erscheinen bei deiner Routine ChatNames eigentlich alle Nicks? Ich wundere mich gerade, dass Du Deine for-Schleife von 1 aus starten lässt und nicht von 0.

Setz mal von Deiner Nickliste die Eigenschaft Sorted auf True, wo taucht dann die Leerzeile auf? Vielleicht liefert ChatNames immer einen leeren Eintrag mit. Eventuell könntest Du innerhalb der for-Schleife überprüfen, ob der Nick wirklich leer ist:
if Trim(AUsers.Items[i].Nick) <> 'then Nicknamen.Items.Add(AUsers.Items[i].Nick);
  Mit Zitat antworten Zitat
RedShakal
(Gast)

n/a Beiträge
 
#6

Re: IRC Userliste

  Alt 27. Jul 2009, 13:39
Die Eigenschaft habe ich zwar bei ListView gesehen, jedoch benutzte ich eine ListBox wo ich den Befehl "IndexOf" leider nicht finden kann.

Muss man da etwas beachten?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#7

Re: IRC Userliste

  Alt 27. Jul 2009, 13:41
ListBox.Items.IndexOf
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
RedShakal
(Gast)

n/a Beiträge
 
#8

Re: IRC Userliste

  Alt 27. Jul 2009, 13:50
Man bin ich heute wieder blind


Danke für den Hinweis ich habe das jetzt so gelöst

Delphi-Quellcode:
procedure TForm3.ChatQuit(Sender: TObject; AUser: TIdIRCUser);
var
  Nick : integer;
begin
  Nick := Nicknamen.Items.IndexOf(AUser.Nick);
  Nicknamen.Items.Delete(Nick);
  ChatText.Lines.Add('[' + TimeToStr(time) + '] '+AUser.Nick+' hat die Lobby verlassen.');
end;
Was die Leerzeile betrifft:

Wenn Sorted auf True steht, ist sie ganz oben.
Die Nicknamen sind alle in der Liste.
Habe auch schon geprüft ob vlt Versehentlich eine Leerzeile in der Listbox selber ist aber dies leider auch nicht.

Edit:

Okay dank SirTwist habe ich jetzt auch das letzte Problem gelöst danke dir!

Delphi-Quellcode:
procedure TForm3.ChatNames(Sender: TObject; AUsers: TIdIRCUsers;
  AChannel: TIdIRCChannel);
var
  i : byte;
begin
  for i:=1 to AUsers.Count-1 do
  if Trim(AUsers.Items[i].Nick) <> 'then Nicknamen.Items.Add(AUsers.Items[i].Nick);
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#9

Re: IRC Userliste

  Alt 27. Jul 2009, 14:14
Dennoch bleibt die Frage, was dann in AUsers.Items[0] drin ist, wenn alle Namen erst danach liegen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
RedShakal
(Gast)

n/a Beiträge
 
#10

Re: IRC Userliste

  Alt 27. Jul 2009, 14:26
Ich habe AUsers beabsichtigt auf 1 gesetzt, weil 0 immer den Eintrag "Nick" brachte.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz