AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eintrag von array of Klasse löschen

Ein Thema von uht · begonnen am 5. Apr 2007 · letzter Beitrag vom 6. Apr 2007
Antwort Antwort
uht

Registriert seit: 3. Dez 2005
46 Beiträge
 
Delphi 2005 Personal
 
#1

Eintrag von array of Klasse löschen

  Alt 5. Apr 2007, 15:59
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?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Eintrag von array of Klasse löschen

  Alt 5. Apr 2007, 16:05
Warum nutzt Du nicht die TList oder die TObjectList?
Die würden das alles für Dich organisieren.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
uht

Registriert seit: 3. Dez 2005
46 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Eintrag von array of Klasse löschen

  Alt 5. Apr 2007, 16:15
Anstatt dem array?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Eintrag von array of Klasse löschen

  Alt 5. Apr 2007, 16:17
Zitat von uht:
Anstatt dem array?
Ja.
Markus Kinzler
  Mit Zitat antworten Zitat
uht

Registriert seit: 3. Dez 2005
46 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Eintrag von array of Klasse löschen

  Alt 5. Apr 2007, 16:32
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';
??
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Eintrag von array of Klasse löschen

  Alt 5. Apr 2007, 18:14
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
Klaus
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Eintrag von array of Klasse löschen

  Alt 6. Apr 2007, 00:43
Und wieso nicht auch gleich TObjectList, wenn es sich schon um Instanzen, sprich Objekte, handelt?
  Mit Zitat antworten Zitat
uht

Registriert seit: 3. Dez 2005
46 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Eintrag von array of Klasse löschen

  Alt 6. Apr 2007, 11:24
Habs jetzt mit einer TObjectList gemacht.
Danke euch, für die Hilfestellung!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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