AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

dyn. Array verkürzen

Ein Thema von Gargamel · begonnen am 15. Dez 2012 · letzter Beitrag vom 15. Dez 2012
Antwort Antwort
Gargamel

Registriert seit: 19. Mär 2007
171 Beiträge
 
#1

dyn. Array verkürzen

  Alt 15. Dez 2012, 15:33
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;
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

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

AW: dyn. Array verkürzen

  Alt 15. Dez 2012, 15:39
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.
Thomas Mueller
  Mit Zitat antworten Zitat
Gargamel

Registriert seit: 19. Mär 2007
171 Beiträge
 
#3

AW: dyn. Array verkürzen

  Alt 15. Dez 2012, 16:01
Vielen Dank.
Wenn ich in den Compiler-Optionen "Bereichsüberprüfung" aktiviere, tritt tatsächlich sofort der Fehler auf.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: dyn. Array verkürzen

  Alt 15. Dez 2012, 16:15
Du weißt es wahrscheinlich schon, aber am besten mit for i := Low(Arrayname) to High(Arrayname) do arbeiten.
  Mit Zitat antworten Zitat
Gargamel

Registriert seit: 19. Mär 2007
171 Beiträge
 
#5

AW: dyn. Array verkürzen

  Alt 15. Dez 2012, 16:28
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz