我为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;