Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
delphixe-TObjectList排序_Delphi_Sorting_Delphi Xe4 - Fatal编程技术网

delphixe-TObjectList排序

delphixe-TObjectList排序,delphi,sorting,delphi-xe4,Delphi,Sorting,Delphi Xe4,我有这样一份清单: FMyScheduleList: TObjectList<TMySchedule>; 如何按此属性对列表进行排序?您必须实现一个自定义的IComparer函数,将此实现传递给类的方法,您可以使用匿名方法和类似的方法来完成此操作 FMyScheduleList.Sort(TComparer<TMySchedule>.Construct( function (const L, R: TMySchedule): integer be

我有这样一份清单:

FMyScheduleList: TObjectList<TMySchedule>;

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

您必须实现一个自定义的
IComparer
函数,将此实现传递给类的方法,您可以使用匿名方法和类似的方法来完成此操作

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
));

我建议使用
DateUtils.CompareDate
,它有3个优点:1。您可能不会混淆-1和1(我一直都会遇到)2。它实际上只是比较日期部分和3。您的delegate中较短的代码在旁注中,我找到了
CompareText
,但是
Integer
Boolean
是否有就绪函数?目前我做了自己的
比较
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
));
FMyScheduleList.Sort(TComparer<TMySchedule>.Construct(
      function (const L, R: TMySchedule): integer
      begin
         Result := CompareDate(L.ADate, R.ADate);
      end
));