我想对包含自定义TPair<>条目的TArray进行排序。我试图理解这个,但是编译器总是抱怨他需要一个对象记录或clastype(E2018):How to sort a generic array containing records。
我的代码是:
type
TFailureEntry = TPair<System.Word, TMyFailureRecord>;
procedure TMyClass.GetFailureAbbreviations;
var
FailureArray: TArray<TFailureEntry>;
Comparison: TComparison<TFailureEntry>;
begin
// derrive the array contents from a dictionary
FailureArray := FFailureDictionary.ToArray;
Comparison :=
function(const Left, Right: TFailureEntry): Integer
begin
Result := Left.Key-Right.Key;
end;
FailureArray.Sort(TComparer<TFailureEntry>.Construct(Comparison));
end;
编译器在.sort调用时发出抱怨。
1条答案
按热度按时间csbfibhn1#
数组不能有方法--在本例中没有排序方法。改用TArray.Sort: