Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wort in einem String suchen (https://www.delphipraxis.net/3065-wort-einem-string-suchen.html)

Pseudemys Nelsoni 22. Feb 2003 05:35

genau das was ich brauche, danke an alle :)

Pseudemys Nelsoni 22. Feb 2003 18:58

Delphi-Quellcode:
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;
das 1. funzt wunderbar, aber das:

"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

Christian Seehase 23. Feb 2003 01:55

Moin Silent,

nach dieser Zeile

Delphi-Quellcode:
acontent := copy(acontent,LastDelimiter(' ', acontent)+1, length(acontent));
enthält acontent nur noch das, was nach dem letzten Blank in acontent gestanden hat, als es übergeben wurde.

Lass Dir doch einfach mal nach der o.g. Zeile mit ShowMessage ausgeben, was noch in acontent steht.

Pseudemys Nelsoni 23. Feb 2003 04:06

hallo christian, danke für die antwort !

hab das geändert in:

Delphi-Quellcode:
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;
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)
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

Christian Seehase 23. Feb 2003 12:29

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:
// Beispiel
if sl2.IndexOf(Nick) > -1 then
begin
  sl2.Delete(sl2.IndexOf(Nick));
  sl1.AddObject(Nick,image10.Picture.Bitmap);
end;
Was die Objekte angeht:
Die werden bei Delete mit aus der Liste entfernt, und bei AddStrings auch mitgenommen.

Pseudemys Nelsoni 23. Feb 2003 20:38

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 ^^

e-dancer 24. Feb 2003 17:08

versuchs mit stringreplace()

Pseudemys Nelsoni 26. Feb 2003 05:44

thx edancer werde das mal versuchen, zuvor noch eins...ich erhalte immer einen fehler:

http://www.united-coding.de/fehler.jpg

der code an dem ganzen ist:

Delphi-Quellcode:
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;
woher kommt dann der fehler?

gruss silent

janjan 26. Feb 2003 07:51

Änder mal beide
Delphi-Quellcode:
for Counter := 0 to Listbox1.Items.IndexOf(Nick)
in
Delphi-Quellcode:
for Counter := 0 to Listbox1.Items.IndexOf(Nick)-1
Das könnte eventuell der fehler sein.

janjan 26. Feb 2003 07:58

Bzw. kommt mir dein Code komisch vor, speziell das hier:
Delphi-Quellcode:
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;
Sollte das listbox1.clear nicht vor der for-Schleife stehen?

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 19:55 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz