排序TStringList:Delphi和Android中的错误

时间:2018-01-10 19:38:32

标签: android sorting delphi

我为TStringLinst创建了一个CustomSort列表。在Windows上运行正常,但在Android List对象上以nil形式发送到CompareDatesReverse函数。在文档中,操作系统与此功能之间没有任何区别。 Android上的CustomSort功能是否有任何不同的处理方式?

Android上的List = nil函数中的参数CompareDatesReverse =>错误:异常类分段错误(11)

   TObjAux = class(TObject)
      FileAge: TDateTime;
      Path: String;
   end;

procedure TForm1.Button1Click(Sender: TObject);
   function CompareDatesReverse(List: TStringList; Index1, Index2: Integer): Integer;
   var d1, d2: TDateTime;
   begin
      d1 := TObjAux(List.Objects[Index1]).FileAge;  // List = Nil on Android
      d2 := TObjAux(List.Objects[Index2]).FileAge;
      if d1 > d2 then
         Result := -1
      else if d1 < d2 then
         Result := 1
      else
         Result := 0;
   end;
var
   LList: TStringDynArray;
   i: Integer;
   fls: TStringList;
   vTmp: String;
   ObjAux: TObjAux;
begin
   fls := TStringList.Create;
   fls.Clear;

   vTmp  := TPath.GetDocumentsPath;
   LList := TDirectory.GetFiles(vTmp);

   for i := 0 to Length(LList) - 1 do begin
      ObjAux      := TObjAux.Create;
      ObjAux.Path := LList[i];
      FileAge(LList[i], ObjAux.FileAge);
      fls.AddObject(FloatToStr(ObjAux.FileAge), ObjAux);
   end;

   if fls.Count > 0 then fls.CustomSort(@CompareDatesReverse);

   fls.DisposeOf;
end;

0 个答案:

没有答案