我有一系列具有各种文件路径和文件名的文件,所有文件名都有相同的扩展名,但目录名称或路径都不同,并设置了将文件加载到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
换句话说,我希望能够通过字符串的文件名部分对路径进行排序.
任何帮助,将不胜感激!.
解决方法
使用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);