![]() |
Zitat:
ich teste dein code nochmal danke für die hilfe ;) gruss mario |
Dann lass Dir den Nick noch vor dem letzten
Code:
anzeigen :!: Im Moment wirst Du aber da wahrscheinlich gar nicht erst ankommen. Offensichtlich stimmt die Ende-Bedingung meiner Schleifen nicht. Und Tschüß.......
end;
|
ich verstehs einfach nicht, bei:
Delphi-Quellcode:
kommt immer n fehler "zugriffsverletzung auf 3523423" oder so
procedure TForm1.IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
AContent: String; var Suppress: Boolean); var s: string; begin SlAdmin := TStringList.Create; s := acontent; if acommand = '353' then begin Repeat Delete(s, 1, 1); Until s[1] = ':'; Delete(s, 1, 1); Repeat while s[1] <> ' ' do Delete(s, 1, 1); Delete(s, 1, 1); if s[1] = '!' then begin SlAdmin.AddObject(Copy(s, 1, Pos(' ', s)), image13.Picture.Bitmap); Delete(s, 1, 1); end; until s = ''; end; end; ist doch alles soweit richtig oder? gruss mario |
Dein Quelltext ist mir zu kompliziert. Damit käme ich nicht weiter. So geht das jetzt, sogar getestet. Mensch, habe mich bestimmt 5mal vertippt bei dem ersten Beispiel, sagt zumindets Delphi.
Code:
Lass sowas mal laufen, dann wirst Du merken, daß am Schluß was nicht stimmt. Bei st muß noch ein Zeichen manipuliert werden. Welches :?: Auf diese Spur bringt Dich der Compiler. :mrgreen:
procedure TForm1.Button1Click(Sender: TObject);
VAR st : string; begin st := 'ufc_user = #tiberiansun :ufc_user @nick1 @nick2 @nick3 @nick4'; repeat delete (st,1,1) until st[1] = ':'; // jetzt nur noch Nicknamen delete (st,1,1); // auch : löschen repeat ListBox1.Items.Add (copy (st,1,pos (' ',st)-1)); // Nick in Box WHILE (st [1] <> ' ') DO delete (st,1,1); delete (st,1,1); showmessage (st); until st =''; end; P.S.: ich meine das st am Anfang, nicht, daß Du an den anderen was rumfummelst :!: |
funzt, danke schön :)
gruss mario |
Zitat:
|
hatte den code extra nicht gepostet, da er unordentlich aussieht und sicher auch zu lang (kürzer krieg ichs halt nicht hin.
Delphi-Quellcode:
dein code ist da mit drin(sonst würds wohl noch nicht funzen *g*)
procedure TForm1.IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
AContent: String; var Suppress: Boolean); var s, s2: string; 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; end; musste ihn nur bisschen verlängern für das ganze Op admin hop voice zeug :\ ...jo ich weiss "wozu die stringslists", da ich die nicks nach bildern ordne und nicht nach alphabet ging das leider nicht anders(oder doch?) :) nochmals danke ^^ gruss mario |
ich glaub ich schaffe das nie sonen dummen chat (und denn noch mit den indy komponenten) fertig zu bekommen :(
Delphi-Quellcode:
^^^^^^^^^^^^^^ 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.
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; 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 |
Das ist viel zu viel, für einen Fehler zu finden. Du mußt das Problem reduzieren und eingrenzen. Ich hab Dir doch gesagt, daß mein Beispeil geht, allerdings nur, sofern mit dem st noch etwas passiert :!:
Code:
@nick4 ist etwas anders als die anderen drei ! Auch nützt es nix, wenn Du schreist: "Mama, mein Programm geht nicht!" :mrgreen: Wo geht was micht ?st := 'ufc_user = #tiberiansun :ufc_user @nick1 @nick2 @nick3 @nick4'; |
Also ich hatte mir das so vorgestellt, das ich bei dem Ereignis "OnRAW"(353(/names)), aus dem String "silent = #tiberiansun :!silent @Benny @Stoja @oXyGeN %sysop %stalin +NewbiLike" die nicks auslese, also alles nach dem ":". Die Nicks mit dem "!" vor dem Nick kommen in die Stringlist "SlAdmin", die mit "@" in die "SlOP"...das gleiche mit hop voice und regulären nicks. Danach kommen die Stringlists in die Listbox, erst admins dann ops dann hops dann voice dann reg.
btw: das erste zeichen jedes nicks muss weg, also der prefix, da ich ein bild stattdessen nehme ^^^^ das ist allein fürs chan joinen (also onnames) Sagen wir mal jemand setzt den mode "+a", dann muss ich in dem String "#tiberiansun +a silent" gucken obs auch "+a" ist (kann ja auch +o -a etc sein), und schlisslich muss ich das letzte Wort(den nick) rausnehmen, ihn in die Stringlist "SlAdmin" packen und die anderen Stringlists "SlOP, SlHop, SlVoice, SlReg" überprüfen in welcher Stringlist der nick vor dem +a war und ihn daraus löschen. Wenn ich das hab Lösch ich die Listbox1 und füge wieder alle Stringlists in die Listbox1. ist bisschen viel oder? :( gruss mario |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 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