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

Comparing oup/current/DataAccess/Access_OniArchive.pas (file contents):
Revision 109 by alloc, Wed Feb 21 03:12:33 2007 UTC vs.
Revision 112 by alloc, Thu Feb 22 00:37:39 2007 UTC

# Line 59 | Line 59 | uses
59  
60  
61   constructor TAccess_OniArchive.Create(DatFilename: String; ConnectionID: Integer; var Msg: TStatusMessages);
62 type
63  THeader = packed record
64    Ident:      array[0..$13] of Byte;
65    Files:      Integer;
66    NamedFiles: Integer;
67    Extensions: Integer;
68    DataAddr:   Integer;
69    DataSize:   Integer;
70    NamesAddr:  Integer;
71    NamesSize:  Integer;
72    Ident2:     array[0..$F] of Byte;
73  end;
74  TFilesMap = array of packed record
75    Extension: array[0..$3] of Char;
76    DataAddr:  Integer;
77    NameAddr:  Integer;
78    FileSize:  Integer;
79    FileType:  LongWord;
80  end;
81  TNamedFilesMap = array of packed record
82    FileNumber: Integer;
83    blubb:      Integer;
84  end;
62   const
63    header_ident1_pc: array[0..$13] of Byte =
64      ($1F, $27, $DC, $33, $DF, $BC, $03, $00, $31, $33, $52, $56, $40, $00,
# Line 249 | Line 226 | var
226        name := fields.Strings[2];
227        extension := fields.Strings[0];
228      end;
229 +    if SortType in [ST_ExtNameAsc, ST_ExtNameDesc] then
230 +    begin
231 +      id := fields.Strings[2];
232 +      name := fields.Strings[1];
233 +      extension := fields.Strings[0];
234 +    end;
235    end;
236  
237   begin
# Line 262 | Line 245 | begin
245      begin
246        if (NoEmptyFiles = False) or ((Fdat_files[i].FileType and $02) = 0) then
247        begin
248 <        if AppSettings.FilenumbersAsHex then
266 <          id := IntToHex(Fdat_files[i].ID, 4)
267 <        else
268 <          id := FormatNumber(Fdat_files[i].ID, 5, '0');
248 >        id := FormatNumber(Fdat_files[i].ID, 5, '0');
249          name := Fdat_files[i].Name;
250          extension := Fdat_files[i].Extension;
251  
# Line 273 | Line 253 | begin
253            ST_IDAsc, ST_IDDesc:     list.Add(id + ';' + name + ';' + extension);
254            ST_NameAsc, ST_NameDesc: list.Add(name + ';' + id + ';' + extension);
255            ST_ExtAsc, ST_ExtDesc:   list.Add(extension + ';' + id + ';' + name);
256 +          ST_ExtNameAsc, ST_ExtNameDesc: list.Add(name + ';' + extension + ';' + id);
257          end;
258        end;
259      end;
# Line 281 | Line 262 | begin
262    if list.Count > 0 then
263    begin
264      fields := TStringList.Create;
265 <    if SortType in [ST_IDAsc, ST_NameAsc, ST_ExtAsc] then
265 >    if SortType in [ST_IDAsc, ST_NameAsc, ST_ExtAsc, ST_ExtNameAsc] then
266        for i := 0 to list.Count - 1 do
267        begin
268          getfields;

Diff Legend

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