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 2 von 2     12   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: IRC Userliste

  Alt 27. Jul 2009, 13:29
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;
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
 
#12

Re: IRC Userliste

  Alt 27. Jul 2009, 15:35
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:
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;
Die Funktion teilt die Strings auf in StrArr[0] , StrArr[1], etc


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 von DeddyH:
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;
Die Nicks bekommt man nur vom Server geschickt, wenn man einen Channel betritt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: IRC Userliste

  Alt 27. Jul 2009, 15:53
Was versuchst Du denn da? Das Zerlegen muss schon mit in die Schleife, sonst macht es ja keinen Sinn.
Delphi-Quellcode:
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;
Ungetestet.
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
 
#14

Re: IRC Userliste

  Alt 27. Jul 2009, 16:09
Super genau das was ich gesucht hab
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
196 Beiträge
 
Delphi XE Professional
 
#15

Re: IRC Userliste

  Alt 27. Jul 2009, 16:10
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...
if SameText(Copy(s, 1, 5), 'KKND|') then s := Copy(s, 6, 999); sollte genauso gehen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: IRC Userliste

  Alt 27. Jul 2009, 16:12
Oder AnsiStartsText
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
 
#17

Re: IRC Userliste

  Alt 27. Jul 2009, 16:17
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.
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
196 Beiträge
 
Delphi XE Professional
 
#18

Re: IRC Userliste

  Alt 27. Jul 2009, 16:42
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 07:13 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