我有一系列具有各种文件路径和文件名的文件,所有文件名都有相同的扩展名,但目录名称或路径都不同,并设置了将文件加载到Tstringlist中,我正在尝试即使它们也有路径,也要将它们排序为文件名顺序。
以下是Tstringlist中字符串的示例: -
c:\directory 1\AboutUs.lnk
c:\directory something\AAHelp.lnk
c:\directory anything\AAATalk.lnk
按字符串的文件名部分排序时,我希望最终得到。
c:\directory anything\AAATalk.lnk
c:\directory something\AAHelp.lnk
c:\directory 1\AboutUs.lnk
换句话说,我希望能够通过字符串的文件名部分对路径进行排序。
任何帮助将不胜感激!。
答案 0 :(得分: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);