![]() |
Listindex überschreitet das Maximum
Könnt ihr mir sagen, warum hierbei immer diese Fehlermeldung angezeigt wird? Sieht so aus, als würde der auf eine Komponentenzahl zugreifen, die nicht mehr existiert?
Delphi-Quellcode:
procedure Tspiel.TiSchnellTimer(Sender: TObject);
var i:integer; for i:=1 to componentcount-1 do begin if timage(components[i]).tag=1 then Timage(components[i]).top:=Timage(components[i]).top-5; if (timage(components[i]).tag=1) and (timage(components[i]).top<0) then Timage(components[i]).destroy; end; end; |
Re: Listindex überschreitet das Maximum
Code:
Hier liegt das Problem. Du könntest es lösen, wenn Du Deine Schleife abwärts zählen lässt. :zwinker:
Timage(components[i]).destroy;
|
Re: Listindex überschreitet das Maximum
Danke klappt, is auch logisch, :spin2: aber man kann ja nicht alles wissen :spin2:
|
Re: Listindex überschreitet das Maximum
Nie Destroy aufrufen. Immer Free.
Warum eigentlich wird von 1 ab gezaehlt? Was dir hier aufstoesst ist das die Schleifenenbedingung nur einmal am Anfang ausgewertet wird. Du loeschst Komponenten was die Anzahl der komponenten verringert. Entspechend greifst du irgendwann auf nicht mehr vorhandene Komponenten zu. Zusaetzlich ueberspringst du Komponenten jedesmal wenn du eine loeschst. Deshalb wie empfohlen abwaerts zaehlen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 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