Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Element aus mehrdimensionalem array entfernen (https://www.delphipraxis.net/31122-element-aus-mehrdimensionalem-array-entfernen.html)

Meflin 4. Okt 2004 17:36


Element aus mehrdimensionalem array entfernen
 
Hi,
ich habe ein mehrdimensioanles array und möchte daraus eine "zeile" entfernen. gibt es dazu eine einfache lösungsmöglichkeit wie items.delete o.ä? wenn nein, wie macht man das am einfachsten?

*MFG*

Nikolas 4. Okt 2004 17:38

Re: Element aus mehrdimensionalem array entfernen
 
Überschreibe diese Zeile doch einfach und lösch dann die letzte also:
Delphi-Quellcode:
For i:= ZULöschendeZeile to length(array) do
array[i]:=array[i+1];

setlength(array, length(array-1);
Müsstest du natürlich für mehrere Dimensionen anpassen, die Idee müsste aber klappen.

Aenogym 4. Okt 2004 17:39

Re: Element aus mehrdimensionalem array entfernen
 
hi meflin,

wenn dein array ein array of string ist, dann:

Delphi-Quellcode:
arrayname[2, 3] := '';
wenn es sich um ein array of pointer handelt:

Delphi-Quellcode:
arrayname[2, 3] := nil;
und so weiter ;)

edit: toxman's lösung für dynamische, meine für statische arrays ;)

Aenogym

Meflin 4. Okt 2004 17:40

Re: Element aus mehrdimensionalem array entfernen
 
ok wenns nix einfacheres gibt...
dummerweise weis ich noch netmal wie viele dimensionen mein array hat. dann wirds halt unübersichtlich :?

Luckie 4. Okt 2004 17:41

Re: Element aus mehrdimensionalem array entfernen
 
Du kannst kein Feld aus einem Array löschen, jedenfalls nicht so einfach. Es gibt zwei Möglichkeiten, entweder du kopierts alle Einträge um ein Feld nach vorne und überschreibst so den zu löschenden Eintrag und dann verkürztz du das Array um eins. Oder, so mache ich es immer, du kopierst einfach den letzten Eintrag auf den zu löschenden Eintrag und verkürzt es dann um eins. Geht aber nur, wenn die nicht unbedingt Sortierung erhaltenbleiben soll oder du sortierst es jedes mal wieder.

Meflin 4. Okt 2004 17:43

Re: Element aus mehrdimensionalem array entfernen
 
ok dann wohl ersteres, da der index die sortierung ist und somit mit der zweiten methode die alte ordnung nicht mehr hergestellt werden könnte. thx jedenfalls!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 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