私の場合は、TDictionary < Tkey、TValue>を使用します。 TKeyCollectionクラス。使用の
function compareKeyReverse(const L, R: TKey): Integer;
begin
// Reverse compare keys
// if TKey = String, uncomment code below
// Result := - SysUtils.CompareText(L, R);
end;
function getReverseSortedKeyArray(dictionary: TDictionary<TKey, TValue>): TArray<TKey>;
var
keyArray: TArray<TKey>;
keyCollecttion: TDictionary<Tkey, TValue>.TKeyCollection;
begin
keyCollecttion:= TDictionary<Tkey, TValue>.TKeyCollection.Create(dictionary);
try
keyArray:= valueCollecttion.ToArray;
TArray.Sort<Tkey>(keyArray, TComparer<Tkey>.Construct(compareKeyReverse));
finally
keyCollecttion.Free;
end;
Result := keyArray;
end;
例:
var
key: TKey;
keyArray : TArray<TKey>;
begin
keyArray := getReverseSortedKeyArray (dictionary);
for key in keyArray do
begin
// ...
end;
end;
別のリストを使用するには、 'のみ' ソリューション、多くの感謝です! – mjn