У меня есть серия файлов с различными путями файлов и именами файлов, все имена файлов имеют одно и то же расширение, но имена или пути каталога различны, и они установили загрузку файлов в Tstringlist, и я пытаюсь сортировать их в порядке имен файлов, даже если у них есть пути.Delphi XE2 Сортировка 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
Другими словами, я хотел бы иметь возможность сортировать строки с пути по имени файла часть строки.
Любая помощь будет оценена !.
Этот подход будет работать, но это может иметь довольно низкую производительность. Зачем? Потому что в этом подходе вы вызываете 'ExtractFileName' дважды для каждого сравнения. Теперь сколько сравнений требуется в значительной степени зависит от того, какой алгоритм сортировки используется. Поэтому я бы рекомендовал подготовить данные (извлечение имен файлов), прежде чем выполнять сортировку. Это может значительно ускорить процесс, поскольку вам нужно будет вызывать 'ExtractFileName' только один раз для каждого элемента списка. – SilverWarior
Или, возможно, даже лучший подход заключался бы в подготовке ваших данных, чтобы он хранился как пара строк, где одна строка представляет путь к файлу, а другая представляет имя файла. Это также позволит вам реализовать так называемую сортировку с несколькими параметрами, в которой вы первоначально должны сортировать свои данные на основе имен файлов, и когда у вас будет несколько файлов с тем же именем, вы будете сортировать их по их пути. – SilverWarior
@SilverWarior, я понимаю вашу точку зрения на оптимизацию. Вы можете опубликовать ответ, реализующий свою идею, и я с удовольствием предлагаю изменить принятый ответ. – karliwson