Forum: Programmieren allgemein
by DeddyH,
5. Jun 2017
Ach siehste, das hatte ich ganz verdrängt. :)
Forum: Programmieren allgemein
by DeddyH,
4. Jun 2017
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.
Forum: Programmieren allgemein
by DeddyH,
4. Jun 2017
Es gibt keinen Index, und sortiert ist ein TDictionary auch nicht. Brauchst Du das unbedingt?
Forum: Programmieren allgemein
by DeddyH,
4. Jun 2017
Aus dem Kopf:
type
TDeinForm = class(TForm)
private
FListe: TDictionary<string, TDeineKlasse>;
...
//Eintrag hinzufügen
FListe.AddOrSetValue(DasWasInDerCaptionSteht, DieInstanzDahinter);
Forum: Programmieren allgemein
by DeddyH,
4. Jun 2017
Dann könntest Du wie gesagt auch ein TDictionary nehmen mit einem String als Key und Deiner Klasse als Value.
Forum: Programmieren allgemein
by DeddyH,
4. Jun 2017
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.
Forum: Programmieren allgemein
by DeddyH,
4. Jun 2017
Das verstehe ich jetzt nicht, aber ich kenne ja auch Dein Programm nicht.
Forum: Programmieren allgemein
by DeddyH,
4. Jun 2017
Wenn Du über einen String in der Liste suchen willst, böte sich doch eine TStringList an. Da mit AddObject die Objekte rein, OwnsObjects auf true gesetzt, anschließend kannst Du mit IndexOf den passenden Eintrag ermitteln.
Forum: Programmieren allgemein
by DeddyH,
4. Jun 2017
Wenn Du tatsächlich MemoryLeaks willst, nimm TList, ich nehme lieber TObjectList ;)
Forum: Programmieren allgemein
by DeddyH,
4. Jun 2017
Ich weiß nicht, für mich sieht das recht umständlich aus. Ich würde erst einmal die Daten in der Objektliste ablegen und mich danach um die Darstellung kümmern. An das dem aktuellen ListViewItem zugeordneten Objekt kommst Du dann mit einem einfachen Typecast, wie Du es ja bereits tust.
var
DeineKlasse: TDeineKlasse;
begin
DeineKlasse := TDeineKlasse(ListView.Selected.Data);
if...