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
DeCodeGuru: 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!