![]() |
AW: ListView Data befüllen?
Man muss es nicht kennen. Das hier ist wie gesagt Testcode und mehr gibt es aktuell nicht in diesem Testprojekt.
Wenn ich TStringList statt eine TObjectList<TListViewData> verwende, dann muss ich immer wenn ich auf ein Object von TStringList zugreife diesen Aufruf mit TListViewData() casten. Das fällt bei der TObjectList<> eben weg. |
AW: ListView Data befüllen?
Achso, das liegt daran, dass es sich um eine generische Liste handelt, der Typ also von vornherein bekannt ist. Sofern es sich bei den Strings um eindeutige Werte handelt, käme auch noch ein TDictionary in Betracht, schneller geht es dann kaum noch. Allerdings muss man dann auch die Objekt selbst freigeben.
|
AW: ListView Data befüllen?
Die Caption ist für jedes ListView-Item immer eindeutig. SubItems können jedoch gleiche Werte enthalten.
Beispiel [ TestEintrag | C:\123 | Ja | Automatisch ] [ EinAndererEintrag | C:\123 | Nein | Semi ] [ RandomText | D:\exec | Nein | Automatisch ] Alles, bis auf die erste Spalte, kann gleich sein. |
AW: ListView Data befüllen?
Dann könntest Du wie gesagt auch ein TDictionary nehmen mit einem String als Key und Deiner Klasse als Value.
|
AW: ListView Data befüllen?
Das habe ich noch nie verwendet. Wie würde ich das in diesem Testfall denn deklarieren?
Die IDE schlägt mir vor
Delphi-Quellcode:
Mh schade IndexOf gibt es nicht =/
TDictionary<TKey,TValue>;
|
AW: ListView Data befüllen?
Aus dem Kopf:
Delphi-Quellcode:
type
TDeinForm = class(TForm) private FListe: TDictionary<string, TDeineKlasse>; ... //Eintrag hinzufügen FListe.AddOrSetValue(DasWasInDerCaptionSteht, DieInstanzDahinter); //Eintrag auslesen if FListe.TryGetValue(DasWasInDerCaptionSteht, DeineKlasse) then DeineKlasse.MachWas; //Instanzen im Dictionary freigeben for DeineKlasse in FListe.Values do DeineKlasse.Free; |
AW: ListView Data befüllen?
Wenn ich TryGetValue ausführe, wie komme ich denn dann an den Index des gefundenen Items heran?
Oder ist das gar nicht erst möglich, da das Dictionary mit Hashes arbeitet und wahrscheinlich eh sortiert ist? |
AW: ListView Data befüllen?
Es gibt keinen Index, und sortiert ist ein TDictionary auch nicht. Brauchst Du das unbedingt?
|
AW: ListView Data befüllen?
Eigentlich nicht. Denn wenn ich mit TObjectList einmal das Item habe welches ich möchte, arbeite ich ja nur noch mit den dort hinterlegten Daten.
Ich baue gleich mal meinen Testcode mit TDictionary um und gucke wie es sich verhält. Du sagtest "schneller geht es nicht". Würde man überhaupt einen Unterschied zwischen TObjectList und TDictionary merken? Es handelt sich hier um weniger als 50 ListView-Einträge. |
AW: ListView Data befüllen?
Bei der Menge wird der Unterschied nicht messbar sein, behaupte ich einfach mal. Aber wenn Du generell über Strings in Deiner Liste suchst, ist das IMO der bequemste Zugriff.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz