Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Array items löschen (https://www.delphipraxis.net/145614-array-items-loeschen.html)

Wishmaster 5. Jan 2010 06:28


Array items löschen
 
Hi


ich suche ne Möglichkeit um Array items zu löschen bzw hoch oder runter zu bewegen.
Wehre dankbar für en Stück Code

ich versuche en kleine Privaten Passwort Manager zu schreibe, dabei versuche ich auch mit der VirtualTreeView umzugehen.


Delphi-Quellcode:
type
(* ValueLis NextGrid *)
  TValueData = record
   Description : string;
   Value      : String;
   Comment    : String;
   HidenValue : Boolean;
  end;

  TValueArray = array of TValueData;           <- Delete or move array item's


(* Grouplist VirtualStringTree *)
  PNodeData = ^TNodeData;
  TNodeData = record
   IconID : Integer;
   Caption : String;
   ValueData : TValueArray;
  end;



thx.

mkinzler 5. Jan 2010 06:43

Re: Array items löschen
 
Geht nur mit Umkopieren.
Für diese Funktionalität werde eine verkettete Liste besser geeignet

himitsu 5. Jan 2010 07:13

Re: Array items löschen
 
Zitat:

Zitat von mkinzler
Geht nur mit Umkopieren.

Dann kommt es noch darauf an, ob die Sortierung erhalten bleiben soll oder ob diese egal ist
und ob die Geschwindigkeit und der Speicherverbrauch eine Rolle spielen.

Sortierung wichtig:
- alle Einträge nach dem zu Löschenden um 1 nach vorne kopieren
- Arraylänge um 1 kürzen

Sortierung egal:
- letzen Eintrag in den zu Löschenden kopieren oder Beide austauschen
- Arraylänge um 1 kürzen

Arraygröße egal:
- zu löschenden Eintrag einfach nur als "gelöscht" markieren
> hier muß man dann diese Markierung selber verwalten,
> beim Auslesen die "gelöschten" überspringen
> und beim Einfügen eventuell erstmal 'ne freige/gelöschte Stelle suchen, um da einzufügen, anstatt man das Array vergrößert hinten anhängt
> und man braucht mehr Speicher

von oben nach unten sind diese Varianten unterschiedlich schnell (jeweil schneller),
wobei man durch die Art des Kopierens auch noch mal am Tempo drehen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz