Re: Array-Element löschen
Wenn Du Move verwendest, geht es noch schneller und ist weniger Code = weniger anfällig:
Delphi-Quellcode:
Aber ehrlich, ich verstehe nicht, was hier viele 'Experten' gegen eine TList haben. Das ist doch schnell genug und macht das alles schon. Ich kenne nicht allzuviele Anwendungen, die so zeitkritisch sind, das man sich ein TExtremelyFastList bauen müsste.
procedure TFeldliste.DeleteField(Index: Integer);
var i,l : integer; begin L := length(FListe); if index < L-1 Then move (fListe[Index + 1], fListe [Index], SizeOf (Fliste[0])* (L - Index - 1)); setlength(Fliste, length(fliste)-1); End; Wenn ich die vorgefertigten Klassen von Delphi nehme, habe ich doch ein paar Sorgen weniger, weil das schonmal funktioniert... Und wenn ich Performanceprobleme bekomme, dann nehme ich mir einen Profiler. Der zeigt mir die Bottlenecks. Wenn TList der Bösewicht ist, wird ausgetauscht. Aber nur dann... |
Re: Array-Element löschen
Zitat:
@Topic Das geht so:
Delphi-Quellcode:
Damit wird es auch automatisch freigegeben, solange OwnsObjects True ist. (In meinem BeispielCode ist es True. ;) )
TObjectList.Remove(DeinObject);
Falls du nur über Index darauf zugreifst könnte man sich eine Ankürzung machen und das hier noch hinzufügen:
Delphi-Quellcode:
TFeldDingslist = class(TObjectList)
... public ... procedure Remove(aIndex: Integer); virtual; ... implementation ... procedure Remove(aIndex: Integer); begin Remove(Items[aIndex]); end; |
Re: Array-Element löschen
[quote="Robert_G"]
Zitat:
quote] Gut, dann hab ich wirklich was verpeilt. Das muss ich mir dann nochmal angucken. mfg Christian |
Re: Array-Element löschen
Zitat:
ich glaube hier hat keiner was gegen TList gesagt, außer ich in der letzten Zeile des Beitrages hinter dem Link. ;) Ich habe eigentlich nur aus 2 Gründen etwas gegen TList a) sie steht in Classes.pas und b) sie hat ihre Methoden nicht virtual. Ich selbst verwende sie nicht sondern eigene Implementierungen, die auf entweder Array oder Listen bzw. Baum -basiert sind. Da ich diese aber nicht rausrücken will ( :P ) denke ich dass eine TList-Ableitung hier prima ihren Job erfüllt. ;) |
Re: Array-Element löschen
Hallo,
Zitat:
Gruß, Marco :angel2: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 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