Nochmals Hi!
Aber eine Frage hätt ich da noch: Wieso funktioniert das
nicht, wenn ich
Array[1…10]
Array[1…11]
Array[1…9]
schreibe? Beim zweiten Fall habe ich ja auch ein Feld mit zehn
Elementen!
Nein, Jenny, das Feld „Array[1…11]“ hat nicht zehn Elemente! Bitte denk noch mal nach und korrigiere Dich dann selbst. Die Sache mit den Elementanzahlen sollte Dir ganz klar sein, weil das im Programmiereralltag an allen Ecken und Enden vorkommt.
Dein Programm funktioniert auch z. B. mit „Array[1…10]“, nur müssen die Grenzen Deines FOR-Zählers dann 1 und 10 sein; genausogut funktioniert „Array[265…274]“ mit „FOR i := 265 TO 274 DO…“. Was nicht geht, ist, wenn Deine Zählvariable i Werte annimmt, die außerhalb der Arraygrenzen liegen. Genau das passiert aber in Deinem Programm:
var Feld : array[1..10] of integer;
counter : integer;
begin;
...
For counter :=0 to 10 do
Feld[counter] := ...;
...
Die untere Grenze des „Feld“-Arrays ist Eins , aber „counter“ läuft von Null ab hoch. In dem Moment, in dem der Compiler was mit „Feld[0]“ anstellen soll, erscheint die Fehlermeldung, denn „Feld[0]“ gibt es ja gar nicht.
Ich rate Dir nochmal dringend, ein Feld mit n Elementen stets als „ARRAY[0…n–1] OF Wasauchimmer“ zu deklarieren. Das ist so eine Art Konvention, an der sich alle (guten) Programmierer halten. Delphi selbst übrigens auch – z. B. stehen die n=Listbox1.Count Elemente der „ListBox1“ in Items[0] bis Items[n-1], nicht in Items[1] bis Items[n]. Der Grund für die Konvention „0 bis n–1“ ist übrigens, daß Computer quasi von Haus aus immer von Null anfangen zu zählen.
Nun sollte Dir klar sein, wie Du Dein Programm gestalten mußt, wenn Du Dich an die Konvention halten willst:
procedure TForm1.Button1Click(Sender: TObject);
var Feld : array[0..9] of integer;
counter : integer;
begin;
randomize;
For counter :=0 to 9 do
Feld[counter] := Random(1000);
Form1.ListBox1.Items.Clear;
for counter :=0 to 9 do
Form1.ListBox1.Items.Add(IntToStr(Feld[counter]));
end;
Auch wenn es mit der „9“ vielleicht auf den ersten Blick etwas komisch aussehen mag: Du gewöhnst Dich schnell daran .
Mit freundlichem Gruß
Martin