Могу ли я изменить ключ в TDictionary без изменения значения?
Чтобы объяснить, я использую TObjectDictionary, который является производным от TDictionary в модуле Delphi XE Generics.Collections. Это все хорошо, за исключением того, что мне также нужно иметь возможность изменять значение ключа для сохраняемого объекта.
Моя первая попытка выглядит следующим образом:
MyObject := MyDictionary.Items[OldKeyValue];
MyDictionary.Remove(OldKeyValue);
MyDictionary.Add(NewKeyValue, MyObject);
Проблема в том, что при удалении () объект освобождается. Я попытался сделать AddOrSetValue, чтобы сначала изменить значение на nil, но это тоже Free - объект. Так как я сказал словарю, что он владеет ими, это достаточно справедливо. Хотя в TObjectDictonary нет дополнительной функции, которую можно удалить без Free, поэтому я перехожу к попытке изменить ключ в словаре без изменения значения. Однако я не вижу ничего похожего на это в справке Delphi XE. Это вообще возможно? Если нет, я вернусь к использованию словаря и сам все освободлю.