Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Eintrag aus dynamischem Array löschen


Mike_C - Do 11.03.04 14:41
Titel: Eintrag aus dynamischem Array löschen
Hi

ich habe ein dynamisches array vom typ TEntry, aus dem ich gerne einen Eintrag an der Stelle index löschen möchte. kann mir jemand sagen, wie das geht?

hier mal meine Definitionen

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
type TEntry = record
  Text: string;
  Priority: boolean;
end;

var Content: array of TEntry;


wenn ich jetzt einfach sage

Delphi-Quelltext
1:
2:
Content[index].Text := '';
Content[index].Priority := False;
und später dann wieder was in das Array rein schreibe, kann es (soweit ich weiß) dazu kommen, dass ich lücken im Array habe. kann mir jemand sagen, wie ich das vermeiden kann?

Gruß
Mike

Moderiert von user profile iconDeCodeGuru: Topic verschoben


Keldorn - Do 11.03.04 20:44

Hallo

einfach in einer Schleife vom zu löschenden index bis zum vorletztem Index des array die Einträge "nachrücken" (Eintrag[i]:=eintrag[i+1]) und evtl anschließend das array mit setlength anpassen. Bei einfügen genau anders rum vorgehen.

Wenn du sowas öfters brauchst, bist du vielleicht mit einer TList oder Tobjectlist besser dran, die verfügen bereits über insert,delete, move - Methoden .

Mfg Frank


Delete - Do 11.03.04 22:19

Also schneller geht's vermutlich mit Move:


Delphi-Quelltext
1:
Move(Content[Index+1], Content[Index], (High(Content)-Index)*SizeOf(TEntry) );                    


Danach einfach das Array verkleinern.


toms - Do 11.03.04 22:32

Hi,

Kannst auch mal diesen Link anschauen: http://www.swissdelphicenter.ch/de/showcode.php?id=816