Einzelnen Beitrag anzeigen

Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.605 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

AW: Notendurchschnitt berechnen und Initialisierung eines Array of integer

  Alt 4. Nov 2020, 12:10
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.
Thomas Mueller

Geändert von dummzeuch ( 4. Nov 2020 um 12:27 Uhr)
  Mit Zitat antworten Zitat