![]() |
genau das was ich brauche, danke an alle :)
|
Delphi-Quellcode:
das 1. funzt wunderbar, aber das:
procedure TForm1.IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
AContent: String; var Suppress: Boolean); var s: string; i: integer; begin acontent := copy(acontent,LastDelimiter(' ', acontent)+1, length(acontent)); if POS('+a', acontent) > 0 then begin for i := 0 to listbox1.Items.IndexOf(acontent) do begin sl1.AddObject(acontent, image10.Picture.Bitmap); sl2.Delete(i); listbox1.Clear; listbox1.Items.AddStrings(sl1); listbox1.Items.AddStrings(sl2); end; end; if POS('-a', acontent) > 0 then memo1.Lines.Add('jo'); end; "if POS('-a', acontent) > 0 then memo1.Lines.Add('jo');" nicht, obwohl bei einem event "-a" vorkommt, wenn ich den ganzen oberen teil lösche und nur das "if POS('-a', acontent) > 0 then memo1.Lines.Add('jo');" nehme gehts. Ist da was falsch dran? btw: sl1 und sl2 sind zwei globale Stringlists edit: color geht wohl nicht in nem delphiquote... lass es aber drin damit man weiss was gemeint is gruss |
Moin Silent,
nach dieser Zeile
Delphi-Quellcode:
enthält acontent nur noch das, was nach dem letzten Blank in acontent gestanden hat, als es übergeben wurde.
acontent := copy(acontent,LastDelimiter(' ', acontent)+1, length(acontent));
Lass Dir doch einfach mal nach der o.g. Zeile mit ShowMessage ausgeben, was noch in acontent steht. |
hallo christian, danke für die antwort !
hab das geändert in:
Delphi-Quellcode:
geht aber noch immer nicht...also is bisschen schwer zu sehen was das sein soll....also es geht darum das ich beim dem mode "+a"(Admin)
procedure TForm1.IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
AContent: String; var Suppress: Boolean); var Mode, Nick: string; Counter: integer; begin Mode := Copy(acontent, 14, 2); Nick := Copy(acontent, LastDelimiter(' ' , acontent)+1, length(acontent)); if Mode = '+a' then begin for Counter := 0 to Listbox1.Items.IndexOf(Nick) do begin sl2.Delete(Counter); sl1.AddObject(Nick, image10.Picture.Bitmap); listbox1.Clear; listbox1.Items.AddStrings(sl1); listbox1.Items.AddStrings(sl2); end; end; if Mode = '-a' then begin for Counter := 0 to listbox1.Items.IndexOf(Nick) do begin sl1.Delete(Counter); sl2.AddObject(Nick, image11.Picture.Bitmap); listbox1.Clear; listbox1.Items.AddStrings(sl1); listbox1.Items.AddStrings(sl2); end; end; end; den Nick aus der TStringlist2(Reg User) in die TStringList1(Admins) tue und von da aus in die Stringlist. Die Admins haben ein object(kleines bildchen) vor dem nick wenn ich aber "-a" mache passiert irgendwie gar nichtsalso user hat immer noch das object vor dem nick und is auch noch immer in StringList1. "for Counter := 0 to listbox1.Items.IndexOf(Nick) do" müsste es hinten vielleicht heissen IndexOfObject? (habs schon probiert geht aber auch nicht. Reicht es überhaupt wenn ich den String aus der listbox lösche oder muss man auch das object davor extra löschen? gruss mario |
Moin Mario,
was mir nicht so ganz klar ist: Warum löscht Du alles bis zu dem Nick, löscht dann die gesamte ListBox, und fügst wieder beide Stringlisten hinzu? Das geht ganz erheblich an die Resourcen. Warum nicht:
Delphi-Quellcode:
Was die Objekte angeht:
// Beispiel
if sl2.IndexOf(Nick) > -1 then begin sl2.Delete(sl2.IndexOf(Nick)); sl1.AddObject(Nick,image10.Picture.Bitmap); end; Die werden bei Delete mit aus der Liste entfernt, und bei AddStrings auch mitgenommen. |
hallo christian,
ich benutze 2 stringlists (sorted) und füge sie in die listbox ein, die erste stringlist1(die admins) dann stringlist2(die regs). wenn ich alle direkt in die listbox packen würde wären admins und regs verteilt, z.b wär ein admin mit "Z" ganz unten und da ich alles von den strnglists nehme muss ich ja die listbox löschen oder nicht gibts da n anderen weg? Ich könnte das so machen wie in deinem beispiel aber dann müsst ich das auch mit der stringlist machen, damit sie auch "aktuell" ist. =) falls du das meinst mit nick löschen: "Nick := Copy(acontent, LastDelimiter(' ' , acontent)+1, length(acontent));" jo ich muss ja den nick aus dem string finden, der ist ganz am ende als letztes wort gruss mario ^^ |
versuchs mit stringreplace()
|
thx edancer werde das mal versuchen, zuvor noch eins...ich erhalte immer einen fehler:
![]() der code an dem ganzen ist:
Delphi-Quellcode:
woher kommt dann der fehler?
procedure TForm1.IdIRC1Raw(Sender: TObject; AUser: TIdIRCUser; ACommand,
AContent: String; var Suppress: Boolean); var Mode, Nick: string; Counter: integer; bmp: TBitmap; begin Mode := Copy(acontent, 14, 2); // Nick aus "acontent" auslesen Nick := Copy(acontent, LastDelimiter(' ' , acontent)+1, length(acontent)); // Mode aus "acontent" auslesen if Mode = '+a' then // Wenn mode "+a" ist begin for Counter := 0 to Listbox1.Items.IndexOf(Nick) do begin sl2.Delete(Counter); // Stringlist(sl2) löschen sl1.AddObject(Nick, image10.Picture.Bitmap); // String "Nick" mit Bild zur Stringlist(sl1) hinzufügen listbox1.Clear; // Listbox1 Strings löschen listbox1.Items.AddStrings(sl1); // Strings aus Stringlist(sl1) der Listbox1 hinzufügen listbox1.Items.AddStrings(sl2); // Strings aus Stringlist(sl2) der Listbox1 hinzufügen end; end; if Mode = '-a' then // Wenn mode "-a" ist begin for Counter := 0 to listbox1.Items.IndexOf(Nick) do begin sl1.Delete(Counter); // Stringlist(sl1) löschen sl2.AddObject(Nick, image11.Picture.Bitmap); // String "Nick" mit Bild zur Stringlist(sl2) hinzufügen listbox1.Clear; // Listbox1 Strings löschen listbox1.Items.AddStrings(sl1); // Strings aus Stringlist(sl1) der Listbox1 hinzufügen listbox1.Items.AddStrings(sl2); // Strings aus Stringlist(sl2) der Listbox1 hinzufügen end; end; end; gruss silent |
Änder mal beide
Delphi-Quellcode:
in
for Counter := 0 to Listbox1.Items.IndexOf(Nick)
Delphi-Quellcode:
Das könnte eventuell der fehler sein.
for Counter := 0 to Listbox1.Items.IndexOf(Nick)-1
|
Bzw. kommt mir dein Code komisch vor, speziell das hier:
Delphi-Quellcode:
Sollte das listbox1.clear nicht vor der for-Schleife stehen?
for Counter := 0 to Listbox1.Items.IndexOf(Nick) do
begin sl2.Delete(Counter); // Stringlist(sl2) löschen sl1.AddObject(Nick, image10.Picture.Bitmap); // String "Nick" mit Bild zur Stringlist(sl1) hinzufügen listbox1.Clear; // Listbox1 Strings löschen listbox1.Items.AddStrings(sl1); // Strings aus Stringlist(sl1) der Listbox1 hinzufügen listbox1.Items.AddStrings(sl2); // Strings aus Stringlist(sl2) der Listbox1 hinzufügen end; Ich versteh nicht so ganz was du da machst. Du löschst ListBox1, fügst ein paar Strings hinzu, löschst Listbox1, fügst ein paar Strings hinzu, löschst Listbox1... Könntest du das mal genauer erklären? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 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