Wie kann ich den Key-Wert in einem Delphi-TDictionary oder TObjectDictionary ändern?

8

Kann ich den Schlüssel in einem TDictionary ändern, ohne den Wert zu ändern?

Um dies zu erklären, verwende ich ein TObjectDictionary, das vom TDictionary in der Delphi XE Generics.Collections Einheit abgeleitet ist. Das ist alles in Ordnung, außer dass ich auch den Schlüsselwert für das gespeicherte Objekt ändern kann.

Mein erster Versuch ist wie folgt:

%Vor%

Das Problem dabei ist, dass die Remove () -Funktion das Objekt freigibt. Ich habe versucht, einen AddOrSetValue zu tun, um den Wert zu Null zuerst zu ändern, aber das ist auch Free das Objekt. Seit ich dem Wörterbuch gesagt habe, dass es ihnen gehört, ist das fair. Es gibt zwar keine zusätzliche Funktion in TObjectDictonary, die ohne Free entfernt werden kann, daher gehe ich dazu über, den Schlüssel im Wörterbuch zu ändern, ohne den Wert zu ändern. Ich kann jedoch nichts sehen, was in der Delphi XE-Hilfe so aussieht. Ist das überhaupt möglich? Wenn nicht, werde ich wieder ein Wörterbuch benutzen und alles selbst freigeben.

    
mj2008 08.04.2011, 13:31
quelle

1 Antwort

18

Rufen Sie TDictionary<TKey,TValue>.ExtractPair(const Key: TKey) auf und Sie erhalten den Schlüssel und den Wert, aber der Wert wurde nicht freigegeben. Sie können es dann mit einem anderen Schlüssel wieder hinzufügen.

Die Methode ExtractPair() gibt eine TPair<TKey,TValue> zurück, die einfach ein Datensatz ist, der einen Schlüssel und den zugehörigen Wert enthält.

Der Code könnte etwa so aussehen:

%Vor%     
David Heffernan 08.04.2011 13:35
quelle

Tags und Links