Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy IRC List (https://www.delphipraxis.net/126470-indy-irc-list.html)

goenner90 25. Dez 2008 02:27


Indy IRC List
 
Hallo,

ich möchte gern in einem Selbstgeschriebenen IRC Clienten die verfügbaren Räume auf dem Netzwerk auflisten lassen. Dies habe ich nun wie folgt versucht.

Delphi-Quellcode:
procedure TForm1.IdIRC1List(Sender: TObject; AChans: TStringList;
  APosition: Integer; ALast: Boolean);
var i:integer;
begin
  for i:=0 to AChans.Count-1 do
    ListBox1.Items.Add(AChans.Names[i]);
end;
Ich bin mir nicht ganz sicher ob AChans.Names soweit stimmt, und desweiteren , habe ich getestet ob er IdIRCList überhaupt aufruft, einmal memo1.lines.add('List Aufruf') in der Prozedur mit aufgerufen und dann connected, leider ruft er es nicht auf...

Weiss jmd. vll Rat, das ich alle auf dem Netzwerk verfügbaren Channels in einer Listbox speichern kann?

MFG

Klaus01 25. Dez 2008 12:42

Re: Indy IRC List
 
Hallo Goenner90,

das folgende deutet darauf hin, dass erst nach einem /LIST Befehl
das Ereignis onList ausgelöst wird.

Code:
    OnChannelMode        The channel mode is now set.
    OnLinks              Results from a /LINK command
    OnList               Results from a /LIST command
Quelle

Grüße und noch ein schönes Weihnachtsfest
Klaus

goenner90 25. Dez 2008 19:52

Re: Indy IRC List
 
Hallo nochmal,

also um /LIST aufzurufen , habe ich folgenden Code verwendet:

Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
begin
  IdIRC1.Raw('LIST');
end;
und in dem IdIRCList Event steht folgender Code:

Delphi-Quellcode:
procedure TForm1.IdIRC1List(Sender: TObject; AChans: TStringList;
  APosition: Integer; ALast: Boolean);
var
  i:integer;
  string1,string2:string;
begin
  for i:=0 to AChans.Count-1  do begin
    string1:=achans.names[i];
    string2:=Copy(string1,0,pos(' ',string1));
    listbox1.Items.Add(string2);
  end;
end;
Dieser Code funktionier soweit, er lässt sich ausführen, jedoch erhalte ich in der Listbox nur 4 Channelnamen und etliche leere Zeilen. Auf dem Netzwerk sind aber 54 Channels, womit das also schonmal nicht hinhauen kann.

Ich wäre sehr froh, wenn jmd. den Code mal testen könnte, und evtl einen Lösungsvorschlag parat hätte, da ich langsam aber sicher am verzweifeln bin.

MFG

Klaus01 26. Dez 2008 08:59

Re: Indy IRC List
 
Guten Morgen,

Delphi-Quellcode:
string2:=Copy(string1,0,pos(' ',string1));
Was passiert denn, wenn in string1 kein Leerzeichen steht,
dann gibt pos(' ',string1) 0 zurück.
Wie groß wird dann string2 werden?

Ist es denn nicht so, dass pro Zeile der StringList ein Channel eingetragen ist?
Wenn dem so sein sollte, dann kann Dein Konstrukt auch so aussehen:

Delphi-Quellcode:
procedure TForm1.IdIRC1List(Sender: TObject; AChans: TStringList;
  APosition: Integer; ALast: Boolean);

begin
  listbox1.Items.Assign(AChans);
end;
Grüße
Klaus

goenner90 26. Dez 2008 10:08

Re: Indy IRC List
 
Vielen Dank, funtioniert so einwandfrei ;-), nun nur noch umwaneln und gut ist.

MFG


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 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