AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

IRC Userliste

Ein Thema von RedShakal · begonnen am 27. Jul 2009 · letzter Beitrag vom 27. Jul 2009
 
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
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:52 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