Einzelnen Beitrag anzeigen

quaero

Registriert seit: 25. Apr 2013
38 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Duplicate Values in TDictionary

  Alt 22. Apr 2015, 08:54
Hallo,

mit
Code:
Myelement.create('mueller', 1)
änderst du nur die Instanz Myelement. Das hat Auswirkungen auf alle Stellen, an denen du mit genau dieser Instanz arbeitest, also auch auf den Schlüssel im Dictionary. Deswegen auch die Fehlermeldung, dass der Schlüssel schon exisitert. Um ein weiteres Wertepaar ins Dictionary einzutragen, solltest du zwei neue Instanzen erstellen mit
Code:
dict.Add(Telement.create('mueller', 1), TFrequencyList.create(5));
Danach erstellst du zwei neue Instanzen mit:
Code:
  Myelement := TElement.create('maier', 99);
Code:
    Myelement := TElement.create('maier', 0);
Diese Instanzen werden natürlich nicht im Dictionary gefunden, da si nicht eingefügt wurden. Selbst wenn du die Zeile rausnimmst, die den Fehler verursacht, werden die neuen Instanzen nicht im Dictionary gefunden. Auch wenn die gleichen Werte in der Klasse gespeichert sind, so handelt es sich dennoch um zwei unterschiedliche Instanzen. Um Instanzen mit gleichen Werten zu vergleichen musst du einen eigenen Comparer schreiben und beim Erstellen des Dictionary mitgeben.
  Mit Zitat antworten Zitat