![]() |
Dynamische Array Elemente verwalten
Hi!
Ich bins mal wieder mit einer Frage bezüglich dynamischer Arrays: Ich kann ja die Länge eines dy. Arrays verhgrössern/verkleinern.... aber Kann ich auch ein bestimmtes Element gezielt herausnehmen (so dass die anderen dann praktisch ´nachrücken´) - oder muss ich das manuell bewerkstelligen :?: :dp: |
Re: Dynamische Array Elemente verwalten
Mit nem dynamischen Array musst du sowas manuell machen... es seidenn ich irre mich ;-)
|
Re: Dynamische Array Elemente verwalten
Zitat:
Zitat:
|
Re: Dynamische Array Elemente verwalten
Wenns nicht auf die Reihenfolge ankommt, kannst du einfach das zu löschende Element mit dem letzten in der Liste überschreiben und dann das letzte löschen. Kommt es auf die Reihenfolge an, kannst du das über eine Schleife lösen:
Delphi-Quellcode:
for i:= StelledeszulöschendenElements to AnzahlDerElemente -2 do
list[i]:= list[i+1]; list[AnzahlDerElemente-1] := 0; // Je nachdem was du drin hast |
Re: Dynamische Array Elemente verwalten
Ich hab dazu für ein Projekt mal ne Prozedur geschrieben.
Ob sie performant ist, müssen dir die profis sagen ( :stupid: ) Aber mal so als "Idee":
Delphi-Quellcode:
TProduktion war halt mein Array.
SetLength(TProduktion, length(TProduktion)+1);
TProduktion[high(TProduktion)] := TProduktion[index-1]; TProduktion[index-1] := TProduktion[index]; TProduktion[index] := TProduktion[high(TProduktion)]; SetLength(TProduktion, length(TProduktion)-1); Der "Trick" ist folgender: Du erweiterst das Array, steckst da zur kurzen Speicherung den Arraywert rein und überschreibst den alten. Dann überschreibst du wiederum den Index, den du grade eben zum überschreiben genommen hast und am Ende wird das Array wieder verkürzt und der ArrayIndex zum kurzzeitigen Speichern gelöscht air (Edit: Achja, in dem Fall wird das ganze halt um einen Wert verringert. Wenn du die ganze Prozedur willst, kannst ja ne PM schicken..das ableiten dürfte nu aber nichmehr schwer sein) |
Re: Dynamische Array Elemente verwalten
Oder man sucht nach DeleteArray in der CodeLib. Dann findet man den folgenden Beitrag:
![]() mit dem man einen Eintrag aus einem beliebigen dynamischen Array löschen kann. |
Re: Dynamische Array Elemente verwalten
:dp: Vielen Dank für die schnelle Hilfe!
Jetzt habe ich ja auch noch die Qual der Wahl! :wink: Na, da es in meinem Array nicht auf die Reihenfolge ankommt, bewerkstellige ich das Ganze auf die ´einfache´ Art. PS: Mein Delphi-selbstbeibring-Nebenprodukt(tm) ist inzwischen ein spielbares Hack´n´Slay ( :oops: leider nur Bilder/sounds usw, keine Wahnsinnsgrafiken :cyclops: ). Ihr könnt gerne mal auf der Seite dazu vorbeischauen (wenn ihr auf sinnloses Gemetzel im AD&D-Stil steht) :mrgreen: , die ich kurzerhand ins Netz geworfen habe : ![]() :xmas: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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