![]() |
Useranzahl per Indy ermitteln
Hallo,
ich möchte gerne wie ![]()
Delphi-Quellcode:
Anscheinend gibt es in Indy 10 die Bezeichnung "AUsers" nicht mehr...
var
i: integer; //begin for i:=0 to AUsers.Count-1 do //führe sooft aus wie User im Channel sind ListBox1.Items.Add(AUsers.Items[i].Nick); //Adde diese zu ListBox //end Dafür hab ich aber die Methode ListChannelNicknames gefunden... Nur wenn ich es so probiere: IndyIRC.ListChannelNicknames(Channel.Text,Userlist ); Bleibt Userlist leer(Userlist muss ein String sein) Wie löße ich das Problem? Und noch eine Frage :D Die Methode "GetChannelTopic" macht "Probleme". Wie verwende ich sie? String:= GetChannelTopic(Channel) funktioniert nicht... Danke |
Re: Useranzahl per Indy ermitteln
Hi,
Zitat:
Dann fragst Du den IRC Server höflich um die Information z.B. per IdIRC.ListChannelNicknames() oder IdIRC.ListServerUsers() oder IdIRC.GetBlaBlaXYZ(). Sobald die Antwort da ist, wird das Ereignis aufgerufen und Deine Methode z.B. für OnNicknamesListReceived ausgeführt. Die Strings in den Anfrage-Funktionen und -Prozedure sind dazu da, weitere Informationen an den *Remote* Server zu senden bevor die Antwort kommt. Welche Methode für welche Prozedur benötigt wird, kann ich Dir ad hoc nicht sagen - ich verwende kein IRC. Es hängt aber wohl auch vom IRC Server ab, was unterstützt wird (3dl.am verweigerte mir eben USERS). Mehr kann ich nicht dazu sagen. Erstmal kommen jetzt die DelphiTage dran. Gruß Assertor |
Re: Useranzahl per Indy ermitteln
Irgendwie hilft mir das nichts...
Selbst wenn ich ListChannelNicknames in einem OnNicknamesListReceived/OnServerUsersListReceived aufrufe, bleibt der Targetstring trotzdem leer. Auch mit der Methode:
Delphi-Quellcode:
In einem OnServerUsersListReceived Event passiert nichts, da er das "Items" nicht kennt...
var
i: integer; //begin for i:=0 to AUsers.Count-1 do //führe sooft aus wie User im Channel sind ListBox1.Items.Add(AUsers.Items[i].Nick); //Adde diese zu ListBox //end |
Re: Useranzahl per Indy ermitteln
Hi,
Zitat:
Du rufst im normalen Code die Funktion ListChannelNicknames auf. Indy ruft dann, sobald die Antwort da Deinen Methode auf (die z.B. OnNicknamesListReceived zugewiesen wurde). Du rufst jetzt die Funktion zum Aufrufen in der Methode selbst auf... Das kann doch nicht gehen. Items: AUsers ist vom Typ TStrings. Das kennt keine Items. Ich habe auch nie gesagt, daß es so funktioniert und man da Items verwenden soll... In der Hilfe von Delphi findest Du unter dem Begriff TStrings alles zum Zugriff erklärt. Da findet man z.B. ein .Strings[Index: Integer]. In Deinem Fall also
Delphi-Quellcode:
Das ist übrigens genau das, was ich im anderen Thread meinte. Es wird so schnell gesagt, Indy hat oder macht Probleme. Das stimmt ja sichtbar nicht... Indy und Delphi können beide nicht hellsehen, die richtige Umsetzung liegt ausschließlich am Programmierer.
var
i: integer; //begin for i:=0 to AUsers.Count-1 do //führe sooft aus wie User im Channel sind ListBox1.Items.Add(AUsers.Strings[i]); //Adde diese zu ListBox //end Gruß Assertor |
Re: Useranzahl per Indy ermitteln
Ich steh wohl grad ziemlich aufm Schlauch.
Also ich sollte das doch so machen:
Delphi-Quellcode:
Nur diese Prozedur wird ja garnicht aufgerufen.
procedure TForm1.ServerUsersListReceived(ASender: TIdContext;
AUsers: TStrings); var i : Integer; begin //begin for i:=0 to AUsers.Count-1 do //führe sooft aus wie User im Channel sind UserList.Items.Add(AUsers.Strings[i]); //Adde diese zu ListBox end; Auch nicht wenn ich ListUsername oder ListServerUsers aufrufe... Danke für deine Geduld :) |
Re: Useranzahl per Indy ermitteln
Ich hab es bisher immer noch nicht hingebracht.
Kann mir jemand noch einen größeren Schubs in die richtige Richtung geben ;) ? |
Re: Useranzahl per Indy ermitteln
Hi,
Zitat:
Du weist dem Ereignis eine Methode zu. Diese Methode (hier ServerUsersListReceived) wird vom Ereignis OnServeUserListReceived aufgerufen nachdem die Antwort des Servers da ist. Den Server fragst Du um seine Antwort, mit dem Aufruf von IdIRC.GetXYZ. Gruß Assertor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 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