--- oup/current/DataAccess/Access_OUP_ADB.pas 2007/03/28 17:57:12 135 +++ oup/current/DataAccess/Access_OUP_ADB.pas 2007/05/02 13:19:40 173 @@ -46,7 +46,7 @@ type implementation uses - SysUtils, Data, Functions, ABSDecUtil, DB, DatLinks; + SysUtils, Data, Functions, ABSDecUtil, DB, DatLinks, StrUtils; (* @@ -90,7 +90,7 @@ begin end; if FQuery.FieldByName('name').AsString = 'lvl' then FLevelNumber := StrToInt(FQuery.FieldByName('value').AsString); - if FQuery.FieldByName('name').AsString = 'DataOS' then + if FQuery.FieldByName('name').AsString = 'os' then begin if FQuery.FieldByName('value').AsString = 'WIN' then FDataOS := DOS_WIN @@ -213,6 +213,14 @@ end; + function CompareItems(List: TStringList; I1, I2: Integer): Integer; + var + s1, s2: String; + begin + s1 := MidStr(List[I1], 1, PosEx(';', List[I1], 6) - 1); + s2 := MidStr(List[I2], 1, PosEx(';', List[I2], 6) - 1); + Result := CompareStr(s1, s2); + end; function TAccess_OUP_ADB.GetFilesList(ext: String; pattern: String; NoEmptyFiles: Boolean; SortType: TSortType): TStrings; @@ -253,7 +261,10 @@ var begin list := TStringList.Create; - list.Sorted := True; + if SortType in [ST_ExtNameAsc, ST_ExtNameDesc] then + list.Sorted := False + else + list.Sorted := True; for i := 0 to GetFileCount - 1 do begin if ((Length(ext) = 0) or (Pos(Fdat_files[i].Extension, ext) > 0)) and @@ -270,11 +281,13 @@ begin ST_IDAsc, ST_IDDesc: list.Add(id + ';' + name + ';' + extension); ST_NameAsc, ST_NameDesc: list.Add(name + ';' + id + ';' + extension); ST_ExtAsc, ST_ExtDesc: list.Add(extension + ';' + id + ';' + name); - ST_ExtNameAsc, ST_ExtNameDesc: list.Add(name + ';' + extension + ';' + id); + ST_ExtNameAsc, ST_ExtNameDesc: list.Add(extension + ';' + name + ';' + id); end; end; end; end; + if SortType in [ST_ExtNameAsc, ST_ExtNameDesc] then + list.CustomSort(CompareItems); if not Assigned(Result) then Result := TStringList.Create; if list.Count > 0 then