Einzelnen Beitrag anzeigen

janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#29
  Alt 27. Feb 2003, 08:07
Du müsstest die Suche mit einer while Schleife machen, nicht mit einer for Schleife. Angenommen deine Liste enthält 6 Einträge, dann läuft die Schleife von 0 bis 5. Wenn du jetzt einen Eintrag löschst und dann versuchst auf eintrag Nummer 5 zuzugreifen, dann überschreitest du das Maximum der Liste.

Oder probiers mal so (mir ist immer noch nicht so ganz klar warum du alles in eine Schleife setzt, das ListBox1.Clear und den Rest musst du nur einmal machen):

Delphi-Quellcode:
procedure TForm1.IdIRC1Part(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel);
var Counter: integer;
    Gefunden: Boolean;
begin
  Gefunden:=False;
  for Counter := 0 to sl1.Count-1 do
    if sl1.Strings[Counter] = auser.Nick then
      begin
        Gefunden:=True;
        break;
      end;
  if Gefunden then
    begin
      sl1.Delete(Counter);
      Listbox1.Clear;
      if sl1.Count > 0 then
        Listbox1.Items.AddStrings(sl1);
      if sl2.Count > 0 then
        Listbox1.Items.AddStrings(sl2);
    end; // if Gefunden
  Gefunden:=False;
  for Counter := 0 to sl2.Count-1 do
    if sl2.Strings[Counter] = auser.Nick then
      begin
        Gefunden:=True;
        break
      end;
  If Gefunden then
    begin
      sl2.Delete(Counter);
      Listbox1.Clear;
      if sl1.Count > 0 then
        Listbox1.Items.AddStrings(sl1);
      if sl2.Count > 0 then
        Listbox1.Items.AddStrings(sl2);
    end; // if Gefunden
end;
(alle Vorschläge wie immer ohne Gewähr auf völlige Richtigkeit)
Die Wichtigkeit eines Postings im Forum ist reziprok zur Anzahl der enthaltenenen, kumulierten Ausrufungszeichen!!!
  Mit Zitat antworten Zitat