![]() |
Re: IRC Userliste
Ist es so evtl. besser?
Delphi-Quellcode:
procedure TForm3.ChatNames(Sender: TObject; AUsers: TIdIRCUsers;
AChannel: TIdIRCChannel); var i : byte; begin Nicknamen.Items.BeginUpdate; try Nicknamen.Items.Clear; for i:=0 to AUsers.Count-1 do Nicknamen.Items.Add(AUsers.Items[i].Nick); finally Nicknamen.Items.EndUpdate; end; end; |
Re: IRC Userliste
Besteht eigentlich die möglichkeit die Stringnamen zu Filtern?
Die Nicks fangen alle mit KKND|Nick an. Das habe ich gemacht weil ich angst hatte, das ein Nick auf dem Server schon belegt sein könnte. Ich wollte das mittels der Explode funktion die ich im Netz gefunden habe aushebeln so das nur der Nick in der Liste auftaucht.
Delphi-Quellcode:
procedure TForm3.ChatNames(Sender: TObject; AUsers: TIdIRCUsers;
AChannel: TIdIRCChannel); var i : byte; StrArr : TDynStringArray; begin if Length(AUsers.Items[i].Nick) > 0 then begin StrArr := Explode('|', AUsers.Items[i].Nick); end; for i:=1 to AUsers.Count-1 do if Trim(StrArr[1]) <> '' then Nicknamen.Items.Add(StrArr[1]); end; Aber die überlegung ist wohl so wie ich sie hatte nicht richtig...
Delphi-Quellcode:
Die Funktion teilt die Strings auf in StrArr[0] , StrArr[1], etc
function Explode(const Separator, S :String; Limit :Integer = 0): TDynStringArray;
var SepLen: Integer; F, P: PChar; begin SetLength(Result, 0); if (S = '') or (Limit < 0) then Exit; if Separator = '' then begin SetLength(Result, 1); Result[0] := S; Exit; end; SepLen := Length(Separator); P := PChar(S); while P^ <> #0 do begin F := P; P := AnsiStrPos(P, PChar(Separator)); if (P = nil) or ((Limit > 0) and (Length(Result) = Limit - 1)) then P := StrEnd(F); SetLength(Result, Length(Result) + 1); SetString(Result[High(Result)], F, P - F); F := P; if P = Separator then SetLength(Result, Length(Result) + 1); while (P^ <> #0) and (P - F < SepLen) do Inc(P); end; end;
Delphi-Quellcode:
---------------------------
Benachrichtigung über Debugger-Exception --------------------------- Im Projekt kknd.exe ist eine Exception der Klasse EListError aufgetreten. Meldung: 'Listenindex überschreitet das Maximum (56)'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen. --------------------------- OK Hilfe --------------------------- PS: Zitat:
|
Re: IRC Userliste
Was versuchst Du denn da? Das Zerlegen muss schon mit in die Schleife, sonst macht es ja keinen Sinn.
Delphi-Quellcode:
Ungetestet.
procedure TForm3.ChatNames(Sender: TObject; AUsers: TIdIRCUsers;
AChannel: TIdIRCChannel); var i : byte; StrArr : TDynStringArray; begin for i:=0 to AUsers.Count-1 do begin if Length(AUsers.Items[i].Nick) > 0 then begin StrArr := Explode('|', AUsers.Items[i].Nick); if (Length(StrArr) > 1) and (Trim(StrArr[1]) <> '') then Nicknamen.Items.Add(StrArr[1]); end; end; end; |
Re: IRC Userliste
Super genau das was ich gesucht hab :thumb:
|
Re: IRC Userliste
Sag mal, was genau versuchst Du da eigentlich? Wieso haben alle Chatter den gleichen Nick?
Wenn es Dir nur darum geht, einen (immer gleichen) Text am Anfang abzutrennen, musst Du nicht unbedingt mit dynamischen String-Arrays und einer Explode-Funktion rumspielen...
Delphi-Quellcode:
sollte genauso gehen.
if SameText(Copy(s, 1, 5), 'KKND|') then s := Copy(s, 6, 999);
|
Re: IRC Userliste
Oder AnsiStartsText ;)
|
Re: IRC Userliste
Ich habe ein kleines Login Script mit Chatlobby geschrieben und will das im Chat die User den gleichen Nick haben wie sie im Login angegeben haben. Ich bin auf einen IRC Server ausgewichen und hatte Angst das evtl einer der Nicks schon vergeben sein könnte. Deshalb habe ich jeden Nick Programmintern umbenennen lassen so das z.b. Test im chat dann KKND|Test heißt.
|
Re: IRC Userliste
Wäre es da nicht einfacher, einen eigenen irc-server zu betreiben? Für Linux gibts den ircd, der ist recht einfach zu konfigurieren. Für Windows wüsste ich jetzt aus dem Bauch heraus nichts, aber da gibt es bestimmt auch was.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 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