1 function StrCmpLogicalW(psz1, psz2: PWideChar): Integer; stdcall; external 'shlwapi.dll';
2
3
4 procedure GetFileList(list: TStringList; path: string; ext: string = '');
5 var
6 sr: TSearchRec;
7 I, J, found: Integer;
8 extStr: string;
9 begin
10 list.Clear;
11 extStr := ext;
12
13 if extStr = '' then
14 extStr := '*.*';
15 found := FindFirst(path + '\' + extStr, faAnyFile, sr);
16
17 while found = 0 do
18 begin
19 if (sr.Name <> '.') and (sr.Name <> '..') and (sr.Attr <> faDirectory) then
20 list.Add(path + '\' + sr.Name);
21 found := FindNext(sr);
22 end;
23 FindClose(sr);
24
25 for I := 0 to list.Count - 1 do
26 begin
27 for J := I + 1 to list.Count - 1 do
28 begin
29 if StrCmpLogicalW(PChar(list[I]), PChar(list[J])) > 0 then
30 list.Exchange(I, J);
31 end;
32 end;
33 end;