ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/oup/current/DataAccess/Access_OUP_ADB.pas
(Generate patch)

Comparing oup/current/DataAccess/Access_OUP_ADB.pas (file contents):
Revision 155 by alloc, Sun Apr 1 21:14:29 2007 UTC vs.
Revision 156 by alloc, Sun Apr 1 22:49:17 2007 UTC

# Line 46 | Line 46 | type
46   implementation
47  
48   uses
49 <  SysUtils, Data, Functions, ABSDecUtil, DB, DatLinks;
49 >  SysUtils, Data, Functions, ABSDecUtil, DB, DatLinks, StrUtils;
50  
51  
52   (*
# Line 213 | Line 213 | end;
213  
214  
215  
216 +  function CompareItems(List: TStringList; I1, I2: Integer): Integer;
217 +  var
218 +    fin: Boolean;
219 +    pos: Integer;
220 +    s1, s2: String;
221 +  begin
222 +    fin := False;
223 +    s1 := MidStr(List[I1], 1, PosEx(';', List[I1], 6) - 1);
224 +    s2 := MidStr(List[I2], 1, PosEx(';', List[I2], 6) - 1);
225 +    pos := 1;
226 +    Result := 0;
227 +    repeat
228 +      if Ord(s1[pos]) < Ord(s2[pos]) then
229 +      begin
230 +        Result := -1;
231 +        fin := True;
232 +      end
233 +      else if Ord(s1[pos]) > Ord(s2[pos]) then
234 +      begin
235 +        Result := 1;
236 +        fin := True;
237 +      end;
238 +      Inc(pos);
239 +    until fin or (pos > Length(s1)) or (pos > Length(s2));
240 +
241 +    if not fin then
242 +    begin
243 +      if pos > Length(s1) then
244 +        Result := -1
245 +      else
246 +        Result := 1;
247 +    end;
248 +  end;
249  
250   function TAccess_OUP_ADB.GetFilesList(ext: String; pattern: String;
251    NoEmptyFiles: Boolean; SortType: TSortType): TStrings;
# Line 253 | Line 286 | var
286  
287   begin
288    list := TStringList.Create;
289 <  list.CaseSensitive := True;
290 <  list.Sorted := True;
289 >  if SortType in [ST_ExtNameAsc, ST_ExtNameDesc] then
290 >    list.Sorted := False
291 >  else
292 >    list.Sorted := True;
293    for i := 0 to GetFileCount - 1 do
294    begin
295      if ((Length(ext) = 0) or (Pos(Fdat_files[i].Extension, ext) > 0)) and
# Line 276 | Line 311 | begin
311        end;
312      end;
313    end;
314 +  if SortType in [ST_ExtNameAsc, ST_ExtNameDesc] then
315 +    list.CustomSort(CompareItems);
316    if not Assigned(Result) then
317      Result := TStringList.Create;
318    if list.Count > 0 then

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)