Einzelnen Beitrag anzeigen

Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#1

Bereichsprüfung geht nicht wirklich

  Alt 6. Jan 2006, 10:45
Hi!

Ich nutze D7 Pro und habe das RangeChecking aktiviert. Trotzdem trat folgende Situation auf:

Delphi-Quellcode:
   while j < length(kante)-1+i do // j=i+2;
    begin
     setlength(save, j-i-1);
     save[j-2]:=kante[j-1];
[... ]
Im Fall i=0 ging das ganze gut. Länge von save war 1, an stelle 0 konnte ich also schreiben. Bei i=1 gings ja dann schief. Länge war 1 (3-1-1), er versuchte aber an Stelle 1 (3-2) zu schreiben.
Es kam zu keiner Fehlermeldung, allerdings hat natürlich der weitere Programmablauf "Schaden" genommen, da ja in Save was falsches drinstand.

Delphi-Quellcode:
   while j < length(kante)-1+i do
    begin
     setlength(save, j-i-1);
     save[j-2-i]:=kante[j-1];
[... ]
Wieso warnt mich die Bereichsprüfung da nicht? Geht das nur bei statischen arrays?
Wie kann man solche Fehler verhindern?`


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat