Delphi XE2按文件名排序Tstringlist

Mic*_*hty 6 delphi sorting

我有一系列具有各种文件路径和文件名的文件,所有文件名都有相同的扩展名,但目录名称或路径都不同,并设置了将文件加载到Tstringlist中,我试图将它们排序为文件名顺序,即使它们也有路径.

以下是Tstringlist中字符串的示例: -

c:\directory 1\AboutUs.lnk
c:\directory something\AAHelp.lnk
c:\directory anything\AAATalk.lnk
Run Code Online (Sandbox Code Playgroud)

当按字符串的文件名部分排序时,我想最终得到.

c:\directory anything\AAATalk.lnk
c:\directory something\AAHelp.lnk
c:\directory 1\AboutUs.lnk
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望能够通过字符串的文件名部分对路径进行排序.

任何帮助,将不胜感激!.

kar*_*son 7

用途TStringList.CustomSort():

function Compare(List: TStringList; Index1, Index2: Integer): Integer;
begin
  Result := CompareStr(
    LowerCase(ExtractFileName(List[Index1])),
    LowerCase(ExtractFileName(List[Index2]))
  );
end;

// Then, just call:
YourStrList.CustomSort(Compare);
Run Code Online (Sandbox Code Playgroud)

  • 不要在这里使用LowerCase.CompareText函数执行不区分大小写的比较.或者AnsiCompareText用于区域设置感知不区分大小写的比较. (3认同)