Einzelnen Beitrag anzeigen

Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#18
  Alt 7. Mär 2003, 18:20
ich glaub ich schaffe das nie sonen dummen chat (und denn noch mit den indy komponenten) fertig zu bekommen

Delphi-Quellcode:
procedure TForm1.IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
  AContent: String; var Suppress: Boolean);
var s, nick: string;
    i: integer;
begin
   SlAdmin := TStringList.Create;
  SlOp := TStringList.Create;
  SlHop := TStringList.Create;
  SlVoice := TStringList.Create;
  SlReg := TStringList.Create;
  SlAdmin.Sorted := true;
  SlOp.Sorted := true;
  SlHop.Sorted := true;
  SlVoice.Sorted := true;
  SlReg.Sorted := true;
  s := acontent;
  if acommand = '353then
  begin
    Repeat
      Delete(s, 1, 1);
    Until s[1] = ':';
    Delete(s, 1, 1);
    Repeat
      if s[1] = '!then
      begin
        Delete(s, 1, 1);
        SlAdmin.AddObject(Copy(s, 1, Pos(' ', s)), image13.Picture.Bitmap);
        i := i + 1;
        label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
      end
      else
      if s[1] = '@then
      begin
        Delete(s, 1, 1);
        SlOp.AddObject(Copy(s, 1, Pos(' ', s)), image12.Picture.Bitmap);
        i := i + 1;
        label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
      end
      else
      if s[1] = '%then
      begin
        Delete(s, 1, 1);
        SlHop.AddObject(Copy(s, 1, Pos(' ', s)), image14.Picture.Bitmap);
        i := i + 1;
        label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
      end
      else
        if s[1] = '+then
      begin
        Delete(s, 1, 1);
        SlVoice.AddObject(Copy(s, 1, Pos(' ', s)), image15.Picture.Bitmap);
        i := i + 1;
        label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
      end
      else
        if (s[1] <> '!') OR (s[1] <> '@') OR (s[1] <> '%') OR (s[1] <> '+') then
        begin
          SlReg.AddObject(Copy(s, 1, Pos(' ', s)), image16.Picture.Bitmap);
          i := i + 1;
          label1.Caption := 'Zur Zeit aktive Benutzer: ' + IntToStr(i);
        end;
      while s[1] <> ' do
        Delete(s, 1, 1);
      Delete(s, 1, 1);
    until s = '';
    listbox1.Items.AddStrings(SlAdmin);
    listbox1.Items.AddStrings(SlOp);
    listbox1.Items.AddStrings(SlHop);
    listbox1.Items.AddStrings(SlVoice);
    listbox1.Items.AddStrings(SlReg);
  end; // BIS HIER HIN AUF DAS "ONNAMES" EREIGNIS
  if Copy(s, 14, 2) = '+athen
  begin
    nick := s;
    delete(nick, 1, 16);
    SlAdmin.AddObject(nick, image13.Picture.Bitmap);
    for i := 0 to SlOP.IndexOf(nick) do
    begin
      if SlOp.IndexOf(nick) > 0 then
      SlOP.Delete(i);
    end;
    for i := 0 to SlHop.IndexOf(nick) do
    begin
      if SlOp.IndexOf(nick) > 0 then
      SlHop.Delete(i);
    end;
    for i := 0 to SlVoice.IndexOf(nick) do
    begin
      if SlOp.IndexOf(nick) > 0 then
      SlVoice.Delete(i);
    end;
    for i := 0 to SlOP.IndexOf(nick) do
    begin
      if SlReg.IndexOf(nick) > 0 then
      SlReg.Delete(i);
    end;
    listbox1.Clear;
    listbox1.Items.AddStrings(SlAdmin);
    listbox1.Items.AddStrings(SlOp);
    listbox1.Items.AddStrings(SlHop);
    listbox1.Items.AddStrings(SlVoice);
    listbox1.Items.AddStrings(SlReg);
    end; // BIS HIER HIN AUF DAS "+a" EREIGNIS
  end;
end;
^^^^^^^^^^^^^^ das ist allein um bei "OnNames" die Nicks aus dem String "= #chan :nick nick2 nick3"(usw) auszulesen und sie in die Stringlists Sladmin, Slop usw einzufügen und von da aus in die Listbox.
ich meine das muss doch auch kürzer gehn für sone kleinigkeit..

gibts nicht irgendwie ne andere lösung? weil dadurch das es soviel ist (da unter soll noch code folgen) komm ich mit dem ganzen nichtmehr klar.
der code der auf das +a reagieren soll funzt z.b nicht richtig.

für jede hilfe dankbar

gruss mario
Mario
  Mit Zitat antworten Zitat