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