![]() |
dyn. Array verkürzen
Hi
Wenn ich einem dyn. Array eine Länge zuweise, die Elemente mit Werten fülle und danach das Array mit setLength(...) verkürze, sind die obersten Elemente trotzdem verfügbar. Das verstehe ich nicht. Kann mir das jemand erklären? Danke. Hier in dem Codebeispiel ist es ein Array aus 5 Elementen, welches dann auf 3 gekürzt wird.
Delphi-Quellcode:
var liste:array of integer;
i:integer; begin setLength(liste, 5); liste[0]:=0; liste[1]:=1; liste[2]:=2; liste[3]:=3; liste[4]:=4; for i:=0 to 4 do ListBox1.Items.Add(IntToStr(liste[i])); Listbox1.Items.Add('Schleifenende'); setLength(liste, 3); for i:=0 to 4 do ListBox1.Items.Add(IntToStr(liste[i])); Listbox1.Items.Add('Schleifenende'); end; |
AW: dyn. Array verkürzen
Das liegt daran, dass man auch ueber Arraygrenzen hinaus auf Elemente zugreifen kann, wenn man das nicht unter den Compileroptionen ausschaltet. Der Speicher ist allerdings u.U. schon wieder fuer andere Verwendung freigegeben und koennte dadurch ueberschrieben worden sein, deshalb sollte man sich darauf nicht verlassen.
|
AW: dyn. Array verkürzen
Vielen Dank.
Wenn ich in den Compiler-Optionen "Bereichsüberprüfung" aktiviere, tritt tatsächlich sofort der Fehler auf. |
AW: dyn. Array verkürzen
Du weißt es wahrscheinlich schon, aber am besten mit
Delphi-Quellcode:
arbeiten.
for i := Low(Arrayname) to High(Arrayname) do
|
AW: dyn. Array verkürzen
Ja, ich ermittle immer die Gesamtanzahl der Elemente eines Arrays. Ich bin auch nur durch Zufall darauf gestossen, daß man nach Verkürzung eines Arrays immer noch auf dessen Elemente zugreifen kann.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz