如何对包含TPair< Word,MyRecordType>条目的TArray进行排序

lhcgjxsq  于 2022-10-16  发布在  其他
关注(0)|答案(1)|浏览(140)

我想对包含自定义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调用时发出抱怨。

csbfibhn

csbfibhn1#

数组不能有方法--在本例中没有排序方法。改用TArray.Sort:

TArray.Sort<TFailureEntry>(FailureArray, TComparer<TFailureEntry>.Construct(Comparison));

相关问题