Список файлов в списке, например windows проводник в Delphi - PullRequest
0 голосов
/ 30 мая 2020

Я перечисляю файлы из определенного каталога, но список не совпадает с Windows Explorer, даже если я проверил сортировку.

Listing by name on Windows

Listing by name in the ListBox

Code

1 Ответ

6 голосов
/ 30 мая 2020

Вам необходимо отсортировать строки с помощью алгоритма сортировки, называемого «LogicalCompare». Далее следуют ингредиенты (надеюсь, я понимаю, как добавить код ...). Кроме того, это работает в delphi10.3, не знаю о предыдущих версиях.

uses Winapi.ShLwApi;
function LogicalCompare(List: TStringList; Index1, Index2: integer): integer;
begin
  Result := StrCmpLogicalW(PWideChar(List[Index1]), PWideChar(List[Index2]));
end;

Для ваших элементов списка вам понадобится немного кладжа, так как элементы относятся к типу TStrings, а Customort работает только для TStringlist. После FindFirst et c. закончено добавить следующее:

...
var sl: TStringlist;
....//Listbox1 items are populated
sl:=TStringlist.create;
try
  sl.assign(Listbox1.items);
  sl.Customsort(LogicalCompare);
  Listbox1.items.assign(sl);
finally
  sl.free;
end;
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...