Это ошибка Delphi.TDictionary<TKey,TValue>.ExtractPair
не присваивает Result
.
RRUZ обнаружил ошибку в КК .
Код гласит:
function TDictionary<TKey,TValue>.ExtractPair(const Key: TKey): TPair<TKey,TValue>;
var
hc, index: Integer;
begin
hc := Hash(Key);
index := GetBucketIndex(Key, hc);
if index < 0 then
Exit(TPair<TKey,TValue>.Create(Key, Default(TValue)));
DoRemove(Key, hc, cnExtracted);
end;
Result
следует назначить при вызове DoRemove
.
Обойти эту ошибку довольно сложно.ExtractPair
- это единственный способ вывести элемент из словаря, не уничтожая ключ, и поэтому вы должны вызвать его.Но так как он не вернет извлеченный элемент, вам необходимо сначала прочитать элемент, запомнить значение и затем вызвать ExtractPair
.