Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism Range Check Error (https://www.delphipraxis.net/146984-range-check-error.html)

Spezi 30. Jan 2010 14:21


Range Check Error
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Delphi-Praktiker :) ,
ich habe eine Frage bezüglich der Fehlermeldung "Range Check Error".
Und zwar habe ich von meinem Informatik-Lehrer ein Programm von Schülern, die nicht mehr an unserer Schule sind bekommen, da ich mich bereit erklärt habe, es evtl etwas zu verbessern, etc.
Nun bin ich, obwohl ich meines Erachtens noch nichts an den Spielfunktionen des Programms geändert habe, auf dieses Problem gestossen.

Sobald man einen bestimmten Zug tätigt, nämlich mit Spieler 2 auf die Torlinie von Spieler 1 zieht, kommt die Fehlermeldung "Range Check Error". Das Programm stürzt nicht ab oder Ähnliches. Man kann einfach normal weiterspielen.

Außerdem habe ich die Bereichsüberprüfung im Kompiler aktiviert, deshalb verstehe ich nicht, warum diese nicht anspringt...

Meine Frage ist nun, wodurch so ein Range Check Error Zustande kommt, und wie man herausfindet, welche Quelltextzeile ihn auslöst.

MfG
Spezi

PS: Ich bin mir nicht ganz sicher, ob ich die richtige Programmiersprache angegeben habe, evtl ist es Win32, aber scheint auch .NET-Teile zu verwenden.

jaenicke 30. Jan 2010 14:30

Re: Range Check Error
 
Zitat:

Zitat von Spezi
Außerdem habe ich die Bereichsüberprüfung im Kompiler aktiviert, deshalb verstehe ich nicht, warum diese nicht anspringt...

Genau deshalb wird der Fehler doch erkannt. Das ist genau der Range Check. :cyclops:

Zitat:

Zitat von Spezi
Meine Frage ist nun, wodurch so ein Range Check Error Zustande kommt, und wie man herausfindet, welche Quelltextzeile ihn auslöst.

Durch debuggen. Wenn du zeilenweise durch den Code gehst, merkst du ja wo der ausgelöst wird. Meistens sind es z.B. dynamische Arrays oder ähnliches, bei denen der zugegriffene Index nicht existiert.

Spezi 30. Jan 2010 14:40

Re: Range Check Error
 
Stimmt, komisch, ich hatte in Erinnerung, dass dieselbe Fehlermeldung erscheint, wenn die Bereichsüberprüfung deaktiviert ist.
Jedenfalls kamen mir sonst schlüssigere Fehlermeldungen, bzw wurde mir sonst die Fehlerhafte Quelltextzeile angezeigt.

Aber ich weiß nun schon, dass es sich um ein Array handelt, nur noch nicht, was nun den Fehler auslöst.

Wie debugge ich?
Wenn ich mit F7 immer die nächste QT-Zeile ausführe, dann führt er ja nur die Anweisungen des Projekts aus?
(Application.Initialize;
...
Application.Run;)

jaenicke 30. Jan 2010 16:11

Re: Range Check Error
 
Wie wäre es mit Haltepunkten?

Mehr zum Debuggen findest du hier:
http://www.delphi-treff.de/delphi-ide/debugger/

himitsu 30. Jan 2010 16:36

Re: Range Check Error
 
Zitat:

Zitat von Spezi
PS: Ich bin mir nicht ganz sicher, ob ich die richtige Programmiersprache angegeben habe, evtl ist es Win32, aber scheint auch .NET-Teile zu verwenden.

In welcher Sprache wurde es denn geschrieben?

Spezi 30. Jan 2010 16:37

Re: Range Check Error
 
Naja, definitiv Delphi :-D
Aber wie sehe ich, ob es .NET oder Win32 ist?

Spezi 30. Jan 2010 20:04

Re: Range Check Error
 
Gut, habe das Problem mittels der Haltepunkte gefunden.
Danke für den Tipp, jetzt weiß ich auch für die nächsten Male, wie man die Fehler effizient findet :wink:

War übrigens ein Zugriffsfehler auf ein Array, das Programm wollte mit dem Index -4 auf das Array zugreifen, obwohl das Array bei -2 anfängt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 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