Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
|
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 = '353' then
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) = '+a' then
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
|