Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Eintrag von array of Klasse löschen (https://www.delphipraxis.net/89779-eintrag-von-array-klasse-loeschen.html)

uht 5. Apr 2007 14:59


Eintrag von array of Klasse löschen
 
Hallo,

folgendes Szenario:
Ich habe mir eine Klasse TStrList erstellt, diese stellt eine Tabelle aus Stringwerten dar.
In meiner Anwendung benutze ich nun ein array of TStrList. Nun will ich einen Eintrag aus diesem array of TStrList löschen.
Das hier,

Delphi-Quellcode:
var KomListe: array of TStrList;

...

for k:= index to length(KomListe)-2 do // schiebt alle Datensätze hinter dem Gelöschten um eins nach vorne
  KomListe[k]:= KomListe[k+1];

KomListe[length(KomListe)-1].Free;     // gibt die letzte Position frei
setlength(KomListe,length(KomListe)-1); // verkürzt das array um 1
klappt nicht ganz, weil ich beim nächsten Zugriff auf die verschobenen Elemente einen Zugriffsfehler bekomme. Mir erscheint dieser Zugriffsfehler auch logisch, aber wie stelle ich das richtig an?

Klaus01 5. Apr 2007 15:05

Re: Eintrag von array of Klasse löschen
 
Warum nutzt Du nicht die TList oder die TObjectList?
Die würden das alles für Dich organisieren.

Grüße
Klaus

uht 5. Apr 2007 15:15

Re: Eintrag von array of Klasse löschen
 
Anstatt dem array?

mkinzler 5. Apr 2007 15:17

Re: Eintrag von array of Klasse löschen
 
Zitat:

Zitat von uht
Anstatt dem array?

Ja.

uht 5. Apr 2007 15:32

Re: Eintrag von array of Klasse löschen
 
Kannst du mir vielleicht mit einem Beispiel ein bischen auf die Sprünge helfen?
Ich habe mit TList noch nicht gearbeitet.

Delphi-Quellcode:
  Liste:= TList.Create;
  Liste.Add(TStrList.Create);

  Liste.Items[0].Komissionsname:= 'test';
??

Klaus01 5. Apr 2007 17:14

Re: Eintrag von array of Klasse löschen
 
Zitat:

Zitat von uht
Kannst du mir vielleicht mit einem Beispiel ein bischen auf die Sprünge helfen?
Ich habe mit TList noch nicht gearbeitet.

Delphi-Quellcode:
  Liste:= TList.Create;
  Liste.Add(TStrList.Create);

  Liste.Items[0].Komissionsname:= 'test';
??

Sollte in etwa so gehen:

Delphi-Quellcode:
Liste := TList.Create;
Liste.Add(TStrList.Create);
TStrList(Liste[0]).Komissionsname:='test';
Du mußt Deine Listenelemente auf Deine Klasse casten, denn TList weiß nicht welches Object sich an dieser
Position befindet.
TList kann verschiedene Objecte gleichzeitig aufnehmen.

Noch ein Link mit Beispielen: Einstieg TList

Grüße
Klaus

Muetze1 5. Apr 2007 23:43

Re: Eintrag von array of Klasse löschen
 
Und wieso nicht auch gleich TObjectList, wenn es sich schon um Instanzen, sprich Objekte, handelt?

uht 6. Apr 2007 10:24

Re: Eintrag von array of Klasse löschen
 
Habs jetzt mit einer TObjectList gemacht.
Danke euch, für die Hilfestellung!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:34 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