Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Listenindex überschrietet das Maximum -> Welche Liste? (https://www.delphipraxis.net/71817-listenindex-ueberschrietet-das-maximum-welche-liste.html)

DGL-luke 21. Jun 2006 15:05

Re: Listenindex überschrietet das Maximum -> Welche Liste
 
OK, das ist genau die Standard-Exception-Meldung, die du NICHT kriegen solltest, der Debugger sollte zuvor eine ähnliche meldung bringen, die dir aber die Möglichkeiten "Programm anhalten" und "Programm fortsetzen" anbietet.

TheAn00bis 21. Jun 2006 15:07

Re: Listenindex überschrietet das Maximum -> Welche Liste
 
@Luckie

Es handelt sich um TObjectList.

Ich programmiere ein Spiel, dass vom Codeumfang für meine Verhältnisse schon ziemlich komplex ist (~1500 selbstgeschriebene Zeilen). Da ich für jeden Objekttypen eine eigene Liste habe sind es 8Listen. 2davon müssen auch über OpenGL abgebildet werden und es muss ständig auf Kollision etc. überprüft werden und die Objekte müssen sich bewegen, dies alles geschieht im OnIdle. Deshalb vermute ich, dass irgendwo beim Löschen noch auf die Liste zugegriffen wird, was dann in einer Exception endet, denn eigentlich überprüfe ich natürlich vor jedem Zugriff die Länge der Listen.

Zitat:

Zitat von DGL-luke
OK, das ist genau die Standard-Exception-Meldung, die du NICHT kriegen solltest, der Debugger sollte zuvor eine ähnliche meldung bringen, die dir aber die Möglichkeiten "Programm anhalten" und "Programm fortsetzen" anbietet.

Die kommt (manchmal) hinterher. Wie bekomme ich die Debugger-Meldung denn wieder?

Edit: Manchmal kommt die hier:

Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt BrickPrj.exe ist eine Exception der Klasse EListError mit der Meldung 'Listenindex überschreitet das Maximum (0)' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Aber nur, wenn ich das Programm, nachdem es sich aufgehängt hat über Taskleiste->Schließen beende.

DGL-luke 21. Jun 2006 15:23

Re: Listenindex überschrietet das Maximum -> Welche Liste
 
das is komisch... also die debugger-meldung sollte immer zuerst kommen... aufhängen sollte es sich natürlich auch nicht ^^

Kannst du mal folgendes probieren:
- exception auslösen, so dass das (standard-) fenster kommt
- in die ide wechseln
- "Programm anhalten" (nicht zurücksetzen!)
- Callstack ansehen ( evtl. mit strg+shift+C aufrufen)

Weisst du, was der callstack ist? eine kurze suche im forum sollte dir das auch sagen ;)

TheAn00bis 21. Jun 2006 15:31

Re: Listenindex überschrietet das Maximum -> Welche Liste
 
Zitat:

Zitat von DGL-luke
das is komisch... also die debugger-meldung sollte immer zuerst kommen... aufhängen sollte es sich natürlich auch nicht ^^

Delphi hängt sich nach dieser Fehlermeldung immer so übel auf... ständig "Fehler beim setzen des Debug-Exception-Hook" und ähnliches; Sachen mit denen ich überhaupt nichts anfangen kann. :D

Der Callstack sieht so aus:

Zitat:

:7c81eb33 kernel32.RaiseException + 0x52
:00413ac6 TList.Get + $1E
Hilft mir das denn?

Edit: Ich solltte mich wohl mal ernsthaft mit Debugging auseinander setzen!

DGL-luke 21. Jun 2006 16:16

Re: Listenindex überschrietet das Maximum -> Welche Liste
 
der callstack sollte länger sein! da solltest du irgendwann zu der methode kommen, in der TList.get aufgerufen wird....

(wenns blöd läuft, kommst du nur zu DefWndProc ^^)

TheAn00bis 21. Jun 2006 16:21

Re: Listenindex überschrietet das Maximum -> Welche Liste
 
edit5: Vergesst, was hier stand, das war vermutlich Unsinn und da blickt sowieso keiner durch.

Wie kann es denn sein, dass bei einigen Exceptions die Zeile und alles angezeigt werden und manchmal gar nicht? Wenn ich nämlich andere Listen lösche, dann wird die Zeile angezeigt - aber auch nicht bei allen!

Zitat:

Zitat von DGL-luke
der callstack sollte länger sein! da solltest du irgendwann zu der methode kommen, in der TList.get aufgerufen wird....

(wenns blöd läuft, kommst du nur zu DefWndProc ^^)

Ist er aber nicht... Callstack = Aufrufstack, richtig?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 Uhr.
Seite 2 von 2     12   

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