Entwickler-Ecke

Sonstiges (Delphi) - Wie lösche ich einen Wert aus der mitte eines Arrays?


CenBells - Fr 15.08.03 18:15
Titel: Wie lösche ich einen Wert aus der mitte eines Arrays?
Hallo Leute,

ich habe ein Dynamisches Array of Integer;

Zur Laufzeit füge ich dort Werte ein. Nun möchte ich auch Werte daraus löschen und dennoch resourcensparend mit dem array umgehen. Ich möchte also die liste um eins verkürzen aber dabei keinen wert verlieren. Gibt es nur die möglichkeit jeden wert ab dem zu löschenden einen nach vorne zu kopieren und dann die länge um eins zu vermindern oder gibt es da was anderes?

Gruß
Ken


AndyB - Fr 15.08.03 18:20

Das ist die einzige Lösung bei Arrays.


CenBells - Fr 15.08.03 18:27

ok,
danke.


Aya - Fr 15.08.03 18:28

Hi,

du könntest auch die TList (hat nix mit TStringList o.Ä. zu tun!) verwenden, welche im grunde auch nen Dynamischer Array ist, der dir aber sehr viele nette komfortable möglichkeiten bietet ;)

Au'revoir,
Aya~


CenBells - Fr 15.08.03 19:03

@aya, Danke für den Tipp, kenn ich aber schon :wink:

Ich habe bisher immer TList benutzt. Wollte jetzt aber mal so ein Array anfassen...

Gruß
Ken


EProm - Sa 30.08.03 23:53


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
Procedure DeleteArrayEntry(Item:Integer;Var Array1:TArray);
Var I:Integer;
Begin
  IF (Length(Array1)>1and (Item<>Length(Array1)-1Then
    For I:=Item To Length(Array1)-2 Do Array1[I]:=Array1[I+1];
  SetLength(Array1,Length(Array1)-1);
End;


die kopfzeile muss noch geändert werden.

füg einfach bei Tarray deinen arraytypen ein...dann sollte es gehen
bsp:


Delphi-Quelltext
1:
Procedure DeleteArrayEntry(Item:Integer;Var Array1:MeinArrayTyp);                    


Moderiert von user profile iconUGrohne: Delphi-Tags eingefügt