![]() |
Zeiger auf Arrays
Ich habe einen Zeiger auf eine stelle eines dynamischen Arrays gerichtet kann aber, wenn ich über setlength dem Array eine neue größe zugeordnet habe, nicht mehr auf die entsprechenden Werte zugreifen und bekomme falsche Ergebnisse. Kann man dies irgendwie umgehen, sodass die Zeiger auch nach verlängern des Arrays auf die richtigen Werte zeigen?
|
Re: Zeiger auf Arrays
Vorschlag 1:
Verwenden einer Liste. -> TList Vorschlag 2: Den Zeiger nicht auf das Array-Element sondern die Daten. -> Array of Pointer |
Re: Zeiger auf Arrays
Eine "dynamisches Array"-Variable ist von sich aus schon ein Zeiger auf das Array. Wenn du darauf noch einmal einen Zeiger setzt, passiert folgendes: Bei jedem Aufruf von SetLength wird das Array an eine andere Speicherstelle verschoben. Daher ist der alte Zeiger nicht mehr gültig.
Benutz also nicht mehr einen Zeiger auf einen Zeiger! |
Re: Zeiger auf Arrays
Danke für die Antworten. Ich verstehe nicht ganz wie ich einen Zeiger direkt auf die Daten erstelle.
Was meinst du mit "Array of Pointer"? |
Re: Zeiger auf Arrays
Delphi-Quellcode:
Da die Daten Seperat angelegt werden müssen (via New) bleiben diese Zeiger Constant.
PData = ^TData;
TData = record ??? end; var a : array of PData; Diese Vorgehensweise ist gleich der von TList. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 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