AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exception in Tlist

Ein Thema von bailey · begonnen am 27. Mär 2006 · letzter Beitrag vom 27. Mär 2006
Antwort Antwort
bailey

Registriert seit: 9. Mär 2006
19 Beiträge
 
#1

Exception in Tlist

  Alt 27. Mär 2006, 18:36
Tach an alle

ich kann mir die Fehler nicht erklären. in Abwechslung kommen die Exception 1 und 3.
was mache ich falsh..!?


Delphi-Quellcode:
procedure TClientClass.PDellLogOutFromDownLoadQueue;
var
    i, n : integer;
    TempKon : PTKontakt;
    tempFile : PTDFile;
begin
    try
     for i:=0 to Download.Count - 1 do
        begin
        if (TDFile(Download.Items[i]^).StatusQueue = cLogOut) then
            begin
            //loschen alle verbindungen
            for n := 0 to TDFile(Download.Items[i]^).From.Count - 1 do
                begin
                    try
                        TKontakt(TDFile(Download.Items[i]^).From.Items[n]^).Verbindung.Free;
                        tempKon := PTkontakt(TDFile(Download.Items[i]^).From.Items[n]^);
                        Dispose(TempKon);
                        TDFile(Download.Items[i]^).From.Delete(n);
                    except
                        on e : Exception do showmessage('Exceptio on TClientClass.PDellFileFromDownLoadQueue 1 ' + e.Message);
                    end; // try -except
                end; // for n
            try
                TempFile := Download.Items[i];
                Dispose(TempFile);
                Download.Delete(i);
            except
                on e : Exception do Showmessage('PDellFileFromDownLoadQueue 2 ' + e.Message);
            end; // try -except
            end; // if
        end; // for i
     except
          on e : Exception do Showmessage('PDellFileFromDownLoadQueue 3 ' + e.Message);
     end;
end;
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Exception in Tlist

  Alt 27. Mär 2006, 18:55
Durch das Entfernen der Elemente mit der Delete-Methode verkleinerst Du die Liste. Somit greifst Du auf nicht mehr vorhandene Listenelemente zu.
Lasse einfach beide Schleifen rückwärts laufen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
bailey

Registriert seit: 9. Mär 2006
19 Beiträge
 
#3

Re: Exception in Tlist

  Alt 27. Mär 2006, 18:59
Das hilft...!?
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Exception in Tlist

  Alt 27. Mär 2006, 19:09
Ja, weil Du dann immer die Elemente freigibst, die Du in den folgenden Schleifendurchläufen nicht mehr benötigst.
Bei Deiner Lösung ist das nicht so.

Stelle Dir eine Liste mit 10 Elementen vor, dann läuft Deine Schleife von 0 bis 9.
Beim ersten Durchlauf entfernst Du das erste Element, die Liste enthält dann nur noch 9 Elemente (Index 0 bis 8).
Im letzten Durchlauf möchtest Du dann auf das Element mit der Nummer 9 zugreifen. Crash!

Gruß Hawkeye
  Mit Zitat antworten Zitat
bailey

Registriert seit: 9. Mär 2006
19 Beiträge
 
#5

Re: Exception in Tlist

  Alt 27. Mär 2006, 19:40
Danke für die Antwort, es hat geholfen.)))
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:59 Uhr.
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