我可以更改TDictionary中的密鑰,而不更改該值嗎?如何更改Delphi TDictionary或TObjectDictionary中的鍵值?
爲了解釋,我使用了TObjectDictionary,它是從Delphi XE Generics.Collections單元中的TDictionary派生的。這一切都很好,除了我還需要能夠更改存儲對象的鍵值。
我第一次嘗試如下:
MyObject := MyDictionary.Items[OldKeyValue];
MyDictionary.Remove(OldKeyValue);
MyDictionary.Add(NewKeyValue, MyObject);
這種方法的問題是,刪除()使對象是Free'd。我試着做一個AddOrSetValue,先將值改爲零,但Free也是這個對象。既然我已經告訴它擁有它們的字典,這就夠公平了。 TObjectDictonary中沒有額外的功能可以在沒有Free的情況下移除,因此我將嘗試在不改變值的情況下更改字典中的Key。但是我無法看到任何看起來像在Delphi XE幫助中會做到的事情。這可能嗎?如果不是的話,我會回去使用一個字典,並自己釋放它。
方法ExtractPair()德爾福2009年不存在。 – Wodzu 2012-11-29 11:55:05