Delphi XE - TObjectList排序

时间:2014-03-21 15:26:36

标签: delphi sorting delphi-xe4

我有一个这样的清单:

FMyScheduleList: TObjectList<TMySchedule>;

它有一个属性:

property ADate: TDate read FDate write FDate;

如何按此属性对列表进行排序?

1 个答案:

答案 0 :(得分:17)

您必须实现将此实现传递给Sort类的System.Generics.Collections.TObjectList方法的自定义IComparer函数,您可以使用带有{{3}的方法的匿名方法执行此操作像这样。

FMyScheduleList.Sort(TComparer<TMySchedule>.Construct(
      function (const L, R: TMySchedule): integer
      begin
         if L.ADate=R.ADate then
            Result:=0
         else if L.ADate< R.ADate then
            Result:=-1
         else
            Result:=1;
      end
));

正如@Stefan建议您也可以使用CompareDate单位中定义的System.DateUtils函数。

FMyScheduleList.Sort(TComparer<TMySchedule>.Construct(
      function (const L, R: TMySchedule): integer
      begin
         Result := CompareDate(L.ADate, R.ADate);
      end
));
相关问题