Zitat:
'Range check error'
Siehst du ... das war jetzt die aktivierte Bereichsprüfung.
Ein "Fehler in der Bereichsprüfung" ist doch viel verständlicher, als eine wilde "Zugriffsverletzung", welche je nach Position und Art des Zugriffs manchmal garnicht erkannt wird oder sich sonstwie auswirkt.
- es werden zufällig an dieser Stelle gefunde Daten gelesen ... welche von anderen Variablen
- es exisitert an dieser Stelle nix oder es ist schreibgeschützt (bei einem Schreibzugriff) = Zugriffsverletzung
- man weist der Variable was zu, an dieser Stelle existiert was Fremdes (andere Variable), dadurch wird dieses überschrieben ... und dann kann später (auch erst viel später) das Programm sonstwie reagieren, jenachdem was dort überschrieben wurde.
Und wenn man dazu noch den Debugger verwendet, dann sagt einem Delphi sogar die Fehlerstelle, welche in deinem Fall zuerst
square[i]:=1;
sein wird, weil das Array viel zu klein ist, da du verggessen hast die Größe zu setzen.
[
OH]Wie soll ich das verstehen spätestens die Größe anzupassen wenn man es benutzt?
Kann ich eine variable mitten im Programm anders deklarieren?[/
OH]
Nein, das hat auch niemand gesagt.
SetLength ändert die Größe des "dynamischen" Arrays, welches du in der Variable "square" deklariert hast.
> "dynamisch änderbar", also zur Laufzeit über
SetLength
PS: Strg+C in Fehlerdialogen = Kopieren der Fehlermeldung