Ich habe die Schleife dahin verändert:
for i := 0 to length(ArrayNoten) do
also -1 weggelassen.
Das ist immernoch falsch (und ich hatte es im Original übersehen):
Korrekt ist
for i := 1 to 6 do
Denn der Index des Arrays ist ja als 1 bis 6 deklariert und nicht 0 bis 5 oder 0 bis 6:
Delphi-Quellcode:
var
ArrayNoten: array[1..6] of Int32;
oder, wie Rollo62 schon schrieb:
for i := Low(ArrayNoten) to High(ArrayNoten) do
Dann setzt der Compiler die korrekten Werte automatisch ein.
Das Length(Array)-1 braucht man nur dann, wenn man das Array dynamisch alloziert, denn dann beginnt der Index immer bei 0, das letzte Element ist also bei Length(Array)-1:
Delphi-Quellcode:
var
ArrayNoten: array of Int32;
begin
SetLength(ArrayNoten, 6);
for i := 0 to Length(ArrayNoten)-1 do
Auch in diesem Fall funktioniert Low und High.
Tipp: Es empfiehlt sich bei den Compiler-Optionen im Debug-Modus Overflow Checking und Range Checking zu aktivieren. Dann hätte es nämlich einen Laufzeitfehler gegeben, weil Du auf einen ungültigen Array-Index zugreifst.