| 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, | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 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 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 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 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 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; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 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; |