| 1 | 
 – | 
 {$A8,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1} | 
 
 
 
 
 
 
 
 
 
 | 2 | 
 – | 
 {$MINSTACKSIZE $00004000} | 
 
 
 
 
 
 
 
 
 
 | 3 | 
 – | 
 {$MAXSTACKSIZE $00100000} | 
 
 
 
 
 
 
 
 
 
 | 4 | 
 – | 
 {$IMAGEBASE $00400000} | 
 
 
 
 
 
 
 
 
 
 | 5 | 
 – | 
 {$APPTYPE GUI} | 
 
 
 
 
 
 
 
 
 
 | 6 | 
 – | 
 {$WARN SYMBOL_DEPRECATED ON} | 
 
 
 
 
 
 
 
 
 
 | 7 | 
 – | 
 {$WARN SYMBOL_LIBRARY ON} | 
 
 
 
 
 
 
 
 
 
 | 8 | 
 – | 
 {$WARN SYMBOL_PLATFORM ON} | 
 
 
 
 
 
 
 
 
 
 | 9 | 
 – | 
 {$WARN SYMBOL_EXPERIMENTAL ON} | 
 
 
 
 
 
 
 
 
 
 | 10 | 
 – | 
 {$WARN UNIT_LIBRARY ON} | 
 
 
 
 
 
 
 
 
 
 | 11 | 
 – | 
 {$WARN UNIT_PLATFORM ON} | 
 
 
 
 
 
 
 
 
 
 | 12 | 
 – | 
 {$WARN UNIT_DEPRECATED ON} | 
 
 
 
 
 
 
 
 
 
 | 13 | 
 – | 
 {$WARN UNIT_EXPERIMENTAL ON} | 
 
 
 
 
 
 
 
 
 
 | 14 | 
 – | 
 {$WARN HRESULT_COMPAT ON} | 
 
 
 
 
 
 
 
 
 
 | 15 | 
 – | 
 {$WARN HIDING_MEMBER ON} | 
 
 
 
 
 
 
 
 
 
 | 16 | 
 – | 
 {$WARN HIDDEN_VIRTUAL ON} | 
 
 
 
 
 
 
 
 
 
 | 17 | 
 – | 
 {$WARN GARBAGE ON} | 
 
 
 
 
 
 
 
 
 
 | 18 | 
 – | 
 {$WARN BOUNDS_ERROR ON} | 
 
 
 
 
 
 
 
 
 
 | 19 | 
 – | 
 {$WARN ZERO_NIL_COMPAT ON} | 
 
 
 
 
 
 
 
 
 
 | 20 | 
 – | 
 {$WARN STRING_CONST_TRUNCED ON} | 
 
 
 
 
 
 
 
 
 
 | 21 | 
 – | 
 {$WARN FOR_LOOP_VAR_VARPAR ON} | 
 
 
 
 
 
 
 
 
 
 | 22 | 
 – | 
 {$WARN TYPED_CONST_VARPAR ON} | 
 
 
 
 
 
 
 
 
 
 | 23 | 
 – | 
 {$WARN ASG_TO_TYPED_CONST ON} | 
 
 
 
 
 
 
 
 
 
 | 24 | 
 – | 
 {$WARN CASE_LABEL_RANGE ON} | 
 
 
 
 
 
 
 
 
 
 | 25 | 
 – | 
 {$WARN FOR_VARIABLE ON} | 
 
 
 
 
 
 
 
 
 
 | 26 | 
 – | 
 {$WARN CONSTRUCTING_ABSTRACT ON} | 
 
 
 
 
 
 
 
 
 
 | 27 | 
 – | 
 {$WARN COMPARISON_FALSE ON} | 
 
 
 
 
 
 
 
 
 
 | 28 | 
 – | 
 {$WARN COMPARISON_TRUE ON} | 
 
 
 
 
 
 
 
 
 
 | 29 | 
 – | 
 {$WARN COMPARING_SIGNED_UNSIGNED ON} | 
 
 
 
 
 
 
 
 
 
 | 30 | 
 – | 
 {$WARN COMBINING_SIGNED_UNSIGNED ON} | 
 
 
 
 
 
 
 
 
 
 | 31 | 
 – | 
 {$WARN UNSUPPORTED_CONSTRUCT ON} | 
 
 
 
 
 
 
 
 
 
 | 32 | 
 – | 
 {$WARN FILE_OPEN ON} | 
 
 
 
 
 
 
 
 
 
 | 33 | 
 – | 
 {$WARN FILE_OPEN_UNITSRC ON} | 
 
 
 
 
 
 
 
 
 
 | 34 | 
 – | 
 {$WARN BAD_GLOBAL_SYMBOL ON} | 
 
 
 
 
 
 
 
 
 
 | 35 | 
 – | 
 {$WARN DUPLICATE_CTOR_DTOR ON} | 
 
 
 
 
 
 
 
 
 
 | 36 | 
 – | 
 {$WARN INVALID_DIRECTIVE ON} | 
 
 
 
 
 
 
 
 
 
 | 37 | 
 – | 
 {$WARN PACKAGE_NO_LINK ON} | 
 
 
 
 
 
 
 
 
 
 | 38 | 
 – | 
 {$WARN PACKAGED_THREADVAR ON} | 
 
 
 
 
 
 
 
 
 
 | 39 | 
 – | 
 {$WARN IMPLICIT_IMPORT ON} | 
 
 
 
 
 
 
 
 
 
 | 40 | 
 – | 
 {$WARN HPPEMIT_IGNORED ON} | 
 
 
 
 
 
 
 
 
 
 | 41 | 
 – | 
 {$WARN NO_RETVAL ON} | 
 
 
 
 
 
 
 
 
 
 | 42 | 
 – | 
 {$WARN USE_BEFORE_DEF ON} | 
 
 
 
 
 
 
 
 
 
 | 43 | 
 – | 
 {$WARN FOR_LOOP_VAR_UNDEF ON} | 
 
 
 
 
 
 
 
 
 
 | 44 | 
 – | 
 {$WARN UNIT_NAME_MISMATCH ON} | 
 
 
 
 
 
 
 
 
 
 | 45 | 
 – | 
 {$WARN NO_CFG_FILE_FOUND ON} | 
 
 
 
 
 
 
 
 
 
 | 46 | 
 – | 
 {$WARN IMPLICIT_VARIANTS ON} | 
 
 
 
 
 
 
 
 
 
 | 47 | 
 – | 
 {$WARN UNICODE_TO_LOCALE ON} | 
 
 
 
 
 
 
 
 
 
 | 48 | 
 – | 
 {$WARN LOCALE_TO_UNICODE ON} | 
 
 
 
 
 
 
 
 
 
 | 49 | 
 – | 
 {$WARN IMAGEBASE_MULTIPLE ON} | 
 
 
 
 
 
 
 
 
 
 | 50 | 
 – | 
 {$WARN SUSPICIOUS_TYPECAST ON} | 
 
 
 
 
 
 
 
 
 
 | 51 | 
 – | 
 {$WARN PRIVATE_PROPACCESSOR ON} | 
 
 
 
 
 
 
 
 
 
 | 52 | 
 – | 
 {$WARN UNSAFE_TYPE OFF} | 
 
 
 
 
 
 
 
 
 
 | 53 | 
 – | 
 {$WARN UNSAFE_CODE OFF} | 
 
 
 
 
 
 
 
 
 
 | 54 | 
 – | 
 {$WARN UNSAFE_CAST OFF} | 
 
 
 
 
 
 
 
 
 
 | 55 | 
 – | 
 {$WARN OPTION_TRUNCATED ON} | 
 
 
 
 
 
 
 
 
 
 | 56 | 
 – | 
 {$WARN WIDECHAR_REDUCED ON} | 
 
 
 
 
 
 
 
 
 
 | 57 | 
 – | 
 {$WARN DUPLICATES_IGNORED ON} | 
 
 
 
 
 
 
 
 
 
 | 58 | 
 – | 
 {$WARN UNIT_INIT_SEQ ON} | 
 
 
 
 
 
 
 
 
 
 | 59 | 
 – | 
 {$WARN LOCAL_PINVOKE ON} | 
 
 
 
 
 
 
 
 
 
 | 60 | 
 – | 
 {$WARN MESSAGE_DIRECTIVE ON} | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1 | 
   | 
 unit LevelDB; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 2 | 
   | 
 interface | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 3 | 
   | 
 uses | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 65 | 
   | 
   Stream_Body, Stream_Names:          TMemoryStream; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 66 | 
   | 
   Stream_Dat, Stream_Raw, Stream_Sep: TFileStream; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 67 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 | 128 | 
 – | 
 //  Data, rawdata: Tdata; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 68 | 
   | 
   BeginTime, FileTime: Double; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 69 | 
   | 
   Step:     Integer; | 
 
 
 
 
 
 
 
 
 
 | 131 | 
 – | 
 //  rawlist:  TRawDataList; | 
 
 
 
 
 
 
 
 
 
 | 132 | 
 – | 
 //  datlinks: TDatLinks; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 70 | 
   | 
   OniImage:   TOniImage; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 71 | 
   | 
   LevelID:    Integer; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 72 | 
   | 
   TimeFormat: TFormatSettings; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 87 | 
   | 
   RawLinks:   TRawDataList; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 88 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 89 | 
   | 
   DatFileStream, RawFileStream: TMemoryStream; | 
 
 
 
 
 
 
 
 
 | 90 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 91 | 
 + | 
 // ########################### | 
 
 
 
 
 
 
 
 
 | 92 | 
 + | 
   datsum, linksum, rawsum: Int64; | 
 
 
 
 
 
 
 
 
 | 93 | 
 + | 
   freq: Int64; | 
 
 
 
 
 
 
 
 
 | 94 | 
 + | 
   tempticks1, tempticks2: Int64; | 
 
 
 
 
 
 
 
 
 | 95 | 
 + | 
 // ########################### | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 96 | 
   | 
 const | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 97 | 
   | 
   Steps: Byte = 3; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 98 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 154 | 
   | 
       begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 155 | 
   | 
         ShowMessage('Couldn''t delete file. Aborting'); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 156 | 
   | 
         Exit; | 
 
 
 
 
 
 
 
 
 
 | 214 | 
 – | 
       end else if not DeleteFile(AnsiReplaceStr(Target, '.dat', '.raw')) then | 
 
 
 
 
 
 
 
 
 
 | 215 | 
 – | 
       begin | 
 
 
 
 
 
 
 
 
 
 | 216 | 
 – | 
         ShowMessage('Couldn''t delete file. Aborting'); | 
 
 
 
 
 
 
 
 
 
 | 217 | 
 – | 
         Exit; | 
 
 
 
 
 
 
 
 
 
 | 218 | 
 – | 
       end else if not DeleteFile(AnsiReplaceStr(Target, '.dat', '.sep')) then | 
 
 
 
 
 
 
 
 
 
 | 219 | 
 – | 
       begin | 
 
 
 
 
 
 
 
 
 
 | 220 | 
 – | 
         ShowMessage('Couldn''t delete file. Aborting'); | 
 
 
 
 
 
 
 
 
 
 | 221 | 
 – | 
         Exit; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 157 | 
   | 
       end; | 
 
 
 
 
 
 
 
 
 | 158 | 
 + | 
       if FileExists(AnsiReplaceStr(Target, '.dat', '.raw')) then | 
 
 
 
 
 
 
 
 
 | 159 | 
 + | 
         if not DeleteFile(AnsiReplaceStr(Target, '.dat', '.raw')) then | 
 
 
 
 
 
 
 
 
 | 160 | 
 + | 
         begin | 
 
 
 
 
 
 
 
 
 | 161 | 
 + | 
           ShowMessage('Couldn''t delete file. Aborting'); | 
 
 
 
 
 
 
 
 
 | 162 | 
 + | 
           Exit; | 
 
 
 
 
 
 
 
 
 | 163 | 
 + | 
         end; | 
 
 
 
 
 
 
 
 
 | 164 | 
 + | 
       if FileExists(AnsiReplaceStr(Target, '.dat', '.sep')) then | 
 
 
 
 
 
 
 
 
 | 165 | 
 + | 
         if Connection.DataOS in [DOS_WINDEMO, DOS_MAC, DOS_MACBETA] then | 
 
 
 
 
 
 
 
 
 | 166 | 
 + | 
           if not DeleteFile(AnsiReplaceStr(Target, '.dat', '.sep')) then | 
 
 
 
 
 
 
 
 
 | 167 | 
 + | 
           begin | 
 
 
 
 
 
 
 
 
 | 168 | 
 + | 
             ShowMessage('Couldn''t delete file. Aborting'); | 
 
 
 
 
 
 
 
 
 | 169 | 
 + | 
             Exit; | 
 
 
 
 
 
 
 
 
 | 170 | 
 + | 
           end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 171 | 
   | 
     end else begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 172 | 
   | 
       ShowMessage('Aborting'); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 173 | 
   | 
       Exit; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 283 | 
   | 
   lbl_estimation.Caption := 'Estimated finishing time: unknown'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 284 | 
   | 
   Application.ProcessMessages; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 285 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 286 | 
 + | 
   QueryPerformanceFrequency(freq); | 
 
 
 
 
 
 
 
 
 | 287 | 
 + | 
   datsum := 0; | 
 
 
 
 
 
 
 
 
 | 288 | 
 + | 
   linksum := 0; | 
 
 
 
 
 
 
 
 
 | 289 | 
 + | 
   rawsum := 0; | 
 
 
 
 
 
 
 
 
 | 290 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 291 | 
   | 
   FileTime := Time; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 292 | 
   | 
   for FileID := 0 to DatHeader.Files - 1 do | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 293 | 
   | 
   begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 296 | 
   | 
       FilesHeader[FileID].Extension[j] := FileInfo.Extension[4 - j]; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 297 | 
   | 
     if FileInfo.Size > 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 298 | 
   | 
     begin | 
 
 
 
 
 
 
 
 
 | 299 | 
 + | 
       QueryPerformanceCounter(tempticks1); | 
 
 
 
 
 
 
 
 
 | 300 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 301 | 
   | 
       FilesHeader[FileID].DataAddr := Stream_Body.Size + 8; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 302 | 
   | 
       DatFileStream := TMemoryStream.Create; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 303 | 
   | 
       Connection.LoadDatFile(FileID, TStream(DatFileStream)); | 
 
 
 
 
 
 
 
 
 
 
 
 | 304 | 
 < | 
       DatFileStream.Seek(4, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 304 | 
 > | 
       DatFileStream.Seek(0, soFromBeginning); | 
 
 
 
 
 
 | 305 | 
 > | 
       DatFileStream.Write(FileID, 4); | 
 
 
 
 
 
 
 
 
 
 
 
 | 306 | 
   | 
       DatFileStream.Write(LevelID, 4); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 307 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 308 | 
 + | 
       QueryPerformanceCounter(tempticks2); | 
 
 
 
 
 
 
 
 
 | 309 | 
 + | 
       datsum := datsum + (tempticks2 - tempticks1); | 
 
 
 
 
 
 
 
 
 | 310 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 311 | 
   | 
       DatLinks := Connection.GetDatLinks(FileID); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 312 | 
   | 
       if Length(DatLinks) > 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 313 | 
   | 
       begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 322 | 
   | 
         end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 323 | 
   | 
       end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 324 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 325 | 
 + | 
       QueryPerformanceCounter(tempticks1); | 
 
 
 
 
 
 
 
 
 | 326 | 
 + | 
       linksum := linksum + (tempticks1 - tempticks2); | 
 
 
 
 
 
 
 
 
 | 327 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 328 | 
   | 
       RawLinks := Connection.GetRawList(FileID); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 329 | 
   | 
       if Length(RawLinks) > 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 330 | 
   | 
       begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 333 | 
   | 
           if RawLinks[i].RawSize > 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 334 | 
   | 
           begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 335 | 
   | 
             RawFileStream := TMemoryStream.Create; | 
 
 
 
 
 
 
 
 
 
 
 
 | 336 | 
 < | 
             if UpperCase(fileinfo.Extension) = 'TXMP' then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 336 | 
 > | 
             Connection.LoadRawFile(FileID, RawLinks[i].SrcOffset, TStream(RawFileStream)); | 
 
 
 
 
 
 | 337 | 
 > | 
             RawFileStream.Seek(0, soFromBeginning); | 
 
 
 
 
 
 | 338 | 
 > | 
             if RawLinks[i].LocSep then | 
 
 
 
 
 
 
 
 
 
 
 
 | 339 | 
   | 
             begin | 
 
 
 
 
 
 
 
 
 
 
 
 | 340 | 
 < | 
               DatFileStream.Seek($88, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 341 | 
 < | 
               DatFileStream.Read(tempb, 1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 378 | 
 < | 
               if (tempb and $01) > 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 379 | 
 < | 
               begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 380 | 
 < | 
                 OniImage.Load(Connection.ConnectionID, FileID); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 381 | 
 < | 
                 if not OniImage.GetMipMappedImage(TStream(RawFileStream)) then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 382 | 
 < | 
                 begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 383 | 
 < | 
                   ShowMessage('MipMapping-Error'); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 384 | 
 < | 
                   RawFileStream.Seek(0, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 385 | 
 < | 
                   tempb := tempb and $FE; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 386 | 
 < | 
                   DatFileStream.Seek($88, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 387 | 
 < | 
                   DatFileStream.Write(tempb, 1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 388 | 
 < | 
                   OniImage.Load(Connection.ConnectionID, FileID); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 389 | 
 < | 
                   OniImage.GetAsData(TStream(RawFileStream)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 390 | 
 < | 
                 end else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 391 | 
 < | 
                 begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 392 | 
 < | 
                   // Change of Depth($89), Storetype ($90) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 393 | 
 < | 
                   DatFileStream.Seek($89, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 394 | 
 < | 
                   DatFileStream.Read(tempb, 1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 395 | 
 < | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 396 | 
 < | 
                   DatFileStream.Seek($90, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 397 | 
 < | 
                   DatFileStream.Read(tempb, 1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 398 | 
 < | 
                   Exit; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 399 | 
 < | 
                 end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 400 | 
 < | 
               end else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 401 | 
 < | 
                 OniImage.GetAsData(TStream(RawFileStream)); | 
 
 
 
 
 
 
 
 
 
 | 340 | 
 > | 
               RawLinks[i].RawAddr := Stream_Sep.Size; | 
 
 
 
 
 
 | 341 | 
 > | 
               Stream_sep.CopyFrom(RawFileStream, RawFileStream.Size); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 342 | 
   | 
             end else begin | 
 
 
 
 
 
 
 
 
 
 
 
 | 343 | 
 < | 
               Connection.LoadRawFile(FileID, RawLinks[i].SrcOffset, TStream(RawFileStream)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 343 | 
 > | 
               RawLinks[i].RawAddr := Stream_Raw.Size; | 
 
 
 
 
 
 | 344 | 
 > | 
               Stream_Raw.CopyFrom(RawFileStream, RawFileStream.Size); | 
 
 
 
 
 
 
 
 
 
 
 
 | 345 | 
   | 
             end; | 
 
 
 
 
 
 
 
 
 
 | 405 | 
 – | 
             RawFileStream.Seek(0, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 346 | 
   | 
           end else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 347 | 
   | 
             RawLinks[i].RawAddr := 0; | 
 
 
 
 
 
 
 
 
 | 348 | 
 + | 
           DatFileStream.Seek(RawLinks[i].SrcOffset, soFromBeginning); | 
 
 
 
 
 
 
 
 
 | 349 | 
 + | 
           DatFileStream.Write(RawLinks[i].RawAddr, 4); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 350 | 
   | 
         end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 351 | 
   | 
       end; | 
 
 
 
 
 
 
 
 
 | 352 | 
 + | 
       DatFileStream.Seek(0, soFromBeginning); | 
 
 
 
 
 
 
 
 
 | 353 | 
 + | 
       Stream_Body.CopyFrom(DatFileStream, DatFileStream.Size); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 354 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 355 | 
 < | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 356 | 
 < | 
             if rawlist[j].raw_size > 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 413 | 
 < | 
             begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 414 | 
 < | 
               if (UpperCase(fileinfo.Extension) = 'TXMP') and | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 415 | 
 < | 
                 ((Data[$88] and $01) > 0) then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 416 | 
 < | 
               begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 417 | 
 < | 
                 OniImage.LoadFromTXMP(Connection, i); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 418 | 
 < | 
                 OniImage.GetMipMappedImage(rawdata); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 419 | 
 < | 
                 rawlist[j].raw_size := OniImage.GetImageDataSize(True); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 420 | 
 < | 
                 Data[$90] := $08; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 421 | 
 < | 
                 Data[$89] := 32; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 422 | 
 < | 
 (*                  if data[$90]<>OniImage.StoreType then begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 423 | 
 < | 
                     data[$90]:=OniImage.StoreType; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 424 | 
 < | 
                     data[$89]:=(data[$89] and $CF) or $20; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 425 | 
 < | 
                   end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 426 | 
 < | 
 *)                end | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 427 | 
 < | 
               else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 428 | 
 < | 
               begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 429 | 
 < | 
                 SetLength(rawdata, rawlist[j].raw_size); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 430 | 
 < | 
                 OniDataConnection.LoadRawFile(i, rawlist[j].src_offset, @rawdata[0]); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 431 | 
 < | 
               end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 432 | 
 < | 
               //                data[$88]:=data[$88] and $FE; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 433 | 
 < | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 434 | 
 < | 
               if rawlist[j].loc_sep then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 435 | 
 < | 
               begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 436 | 
 < | 
                 rawlist[j].raw_addr := Stream_Sep.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 437 | 
 < | 
                 Stream_Sep.Write(rawdata[0], Length(rawdata)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 438 | 
 < | 
               end | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 439 | 
 < | 
               else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 440 | 
 < | 
               begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 441 | 
 < | 
                 rawlist[j].raw_addr := Stream_Raw.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 442 | 
 < | 
                 Stream_Raw.Write(rawdata[0], Length(rawdata)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 443 | 
 < | 
               end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 444 | 
 < | 
             end | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 445 | 
 < | 
             else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 446 | 
 < | 
               rawlist[j].raw_addr := 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 447 | 
 < | 
             Data[rawlist[j].src_offset + 0] := (rawlist[j].raw_addr) and $FF; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 448 | 
 < | 
             Data[rawlist[j].src_offset + 1] := (rawlist[j].raw_addr shr 8) and $FF; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 449 | 
 < | 
             Data[rawlist[j].src_offset + 2] := (rawlist[j].raw_addr shr 16) and $FF; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 450 | 
 < | 
             Data[rawlist[j].src_offset + 3] := (rawlist[j].raw_addr shr 24) and $FF; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 451 | 
 < | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 452 | 
 < | 
       Stream_Body.Write(Data[0], Length(Data)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 453 | 
 < | 
       // | 
 
 
 
 
 
 
 
 
 
 | 355 | 
 > | 
       QueryPerformanceCounter(tempticks2); | 
 
 
 
 
 
 | 356 | 
 > | 
       rawsum := rawsum + (tempticks2 - tempticks1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 357 | 
   | 
     end | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 358 | 
   | 
     else | 
 
 
 
 
 
 
 
 
 
 
 
 | 359 | 
 < | 
       FilesHeader[i].DataAddr := 0; | 
 
 
 
 
 
 
 
 
 
 | 359 | 
 > | 
       FilesHeader[FileID].DataAddr := 0; | 
 
 
 
 
 
 
 
 
 
 
 
 | 360 | 
   | 
     if Length(fileinfo.Name) > 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 361 | 
   | 
     begin | 
 
 
 
 
 
 
 
 
 
 
 
 | 362 | 
 < | 
       FilesHeader[i].NameAddr := Stream_Names.Size; | 
 
 
 
 
 
 
 
 
 
 | 362 | 
 > | 
       FilesHeader[FileID].NameAddr := Stream_Names.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 | 363 | 
   | 
       temps := fileinfo.Extension + fileinfo.Name + Chr(0); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 364 | 
   | 
       Stream_Names.Write(temps[1], Length(temps)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 365 | 
   | 
     end | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 366 | 
   | 
     else | 
 
 
 
 
 
 
 
 
 
 
 
 | 367 | 
 < | 
       FilesHeader[i].NameAddr := 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 368 | 
 < | 
     FilesHeader[i].FileSize := fileinfo.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 369 | 
 < | 
     FilesHeader[i].FileType := fileinfo.FileType; | 
 
 
 
 
 
 
 
 
 
 | 367 | 
 > | 
       FilesHeader[FileID].NameAddr := 0; | 
 
 
 
 
 
 | 368 | 
 > | 
     FilesHeader[FileID].FileSize := fileinfo.Size; | 
 
 
 
 
 
 | 369 | 
 > | 
     FilesHeader[FileID].FileType := fileinfo.FileType; | 
 
 
 
 
 
 
 
 
 
 
 
 | 370 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 371 | 
 < | 
     if ((i mod 10) = 0) and (i >= 100) then | 
 
 
 
 
 
 
 
 
 
 | 371 | 
 > | 
     if ((FileID mod 10) = 0) and (FileID >= 100) then | 
 
 
 
 
 
 
 
 
 
 
 
 | 372 | 
   | 
       lbl_estimation.Caption := 'Estimated time left: ' + TimeToStr( | 
 
 
 
 
 
 
 
 
 
 
 
 | 373 | 
 < | 
         (Time - FileTime) / i * (progress.Max - i + 1) * 1.1, TimeFormat ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 374 | 
 < | 
     progress.Position := i + 1; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 375 | 
 < | 
     lbl_progress.Caption := 'Files done: ' + IntToStr(i + 1) + '/' + IntToStr(progress.Max); | 
 
 
 
 
 
 
 
 
 
 | 373 | 
 > | 
         (Time - FileTime) / FileID * (progress.Max - FileID + 1) * 1.1, TimeFormat ); | 
 
 
 
 
 
 | 374 | 
 > | 
     progress.Position := FileID + 1; | 
 
 
 
 
 
 | 375 | 
 > | 
     lbl_progress.Caption := 'Files done: ' + IntToStr(FileID + 1) + '/' + IntToStr(progress.Max); | 
 
 
 
 
 
 
 
 
 
 
 
 | 376 | 
   | 
     Application.ProcessMessages; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 377 | 
   | 
   end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 378 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 379 | 
 + | 
   ShowMessage('AvgDats: ' + FloatToStr((datsum / progress.Max) / freq) + #13#10 + | 
 
 
 
 
 
 
 
 
 | 380 | 
 + | 
       'AvgLinks: ' + FloatToStr((linksum / progress.Max) / freq) + #13#10 + | 
 
 
 
 
 
 
 
 
 | 381 | 
 + | 
       'AvgRaws: ' + FloatToStr((rawsum / progress.Max) / freq) | 
 
 
 
 
 
 
 
 
 | 382 | 
 + | 
    ); | 
 
 
 
 
 
 
 
 
 | 383 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 384 | 
   | 
   Stream_Dat.Write(DatHeader, SizeOf(DatHeader)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 385 | 
   | 
   for i := 0 to High(FilesHeader) do | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 386 | 
   | 
     Stream_Dat.Write(FilesHeader[i], SizeOf(FilesHeader[i])); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 392 | 
   | 
   DatHeader.DataSize  := Stream_Body.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 393 | 
   | 
   DatHeader.NamesSize := Stream_Names.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 394 | 
   | 
   DatHeader.DataAddr  := Stream_Dat.Size; | 
 
 
 
 
 
 
 
 
 | 395 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 396 | 
   | 
   Stream_Body.Seek(0, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 397 | 
   | 
   Stream_Dat.CopyFrom(Stream_Body, Stream_Body.Size); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 398 | 
   | 
   DatHeader.NamesAddr := Stream_Dat.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 406 | 
   | 
   Stream_Body.Free; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 407 | 
   | 
   Stream_Names.Free; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 408 | 
   | 
   Stream_Raw.Free; | 
 
 
 
 
 
 
 
 
 
 
 
 | 409 | 
 < | 
   if OniDataConnection.OSisMac then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 409 | 
 > | 
  | 
 
 
 
 
 
 | 410 | 
 > | 
   if Connection.DataOS in [DOS_WINDEMO, DOS_MAC, DOS_MACBETA] then | 
 
 
 
 
 
 
 
 
 
 
 
 | 411 | 
   | 
     Stream_Sep.Free; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 412 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 413 | 
   | 
   progress.Position      := progress.Max; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 423 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 424 | 
   | 
   converting := False; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 425 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 426 | 
 < | 
   CloseDataConnection(DataConnections[conIndex]); | 
 
 
 
 
 
 
 
 
 
 | 426 | 
 > | 
 //  CloseDataConnection(DataConnections[conIndex]); | 
 
 
 
 
 
 
 
 
 
 
 
 | 427 | 
   | 
 end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 428 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 429 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 433 | 
   | 
 var | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 434 | 
   | 
   i: Byte; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 435 | 
   | 
 begin | 
 
 
 
 
 
 
 
 
 
 
 
 | 436 | 
 < | 
   for i := 1 to Length(ConvertHandlers) do | 
 
 
 
 
 
 
 
 
 
 | 436 | 
 > | 
 {  for i := 1 to Length(ConvertHandlers) do | 
 
 
 
 
 
 
 
 
 
 
 
 | 437 | 
   | 
     if UpperCase(ConvertHandlers[i].Ext) = UpperCase(ext) then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 438 | 
   | 
       if ConvertHandlers[i].needed then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 439 | 
   | 
       begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 442 | 
   | 
       end | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 443 | 
   | 
       else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 444 | 
   | 
         Break; | 
 
 
 
 
 
 
 
 
 
 
 
 | 445 | 
 < | 
 end; | 
 
 
 
 
 
 
 
 
 
 | 445 | 
 > | 
 }end; | 
 
 
 
 
 
 
 
 
 
 
 
 | 446 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 447 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 448 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 449 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 450 | 
   | 
 procedure TForm_LevelDB.CreateDatabase(Source, target: String); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 451 | 
   | 
 var | 
 
 
 
 
 
 
 
 
 | 452 | 
 + | 
   DataBase:  TABSDatabase; | 
 
 
 
 
 
 
 
 
 | 453 | 
 + | 
 { | 
 
 
 
 
 
 
 
 
 | 454 | 
 + | 
 var | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 455 | 
   | 
   DataBase:    TABSDatabase; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 456 | 
   | 
   Query:       TABSQuery; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 457 | 
   | 
   MimeCoder:   TStringFormat_MIME64; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 482 | 
   | 
     else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 483 | 
   | 
       group_progress.Caption := 'Creating DB (FINISHED)'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 484 | 
   | 
   end; | 
 
 
 
 
 
 
 
 
 | 485 | 
 + | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 486 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 487 | 
   | 
 begin | 
 
 
 
 
 
 
 
 
 
 
 
 | 488 | 
 < | 
   if CreateDataConnection(Source, ODB_Dat) = nil then | 
 
 
 
 
 
 
 
 
 
 | 488 | 
 > | 
 {  if CreateDataConnection(Source, ODB_Dat) = nil then | 
 
 
 
 
 
 
 
 
 
 
 
 | 489 | 
   | 
   begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 490 | 
   | 
     ShowMessage('Could not connect to .dat-file'); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 491 | 
   | 
     Exit; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 511 | 
   | 
   absolutebegintime := Time; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 512 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 513 | 
   | 
   DataBase := TABSDatabase.Create(Self); | 
 
 
 
 
 
 
 
 
 | 514 | 
 + | 
 } | 
 
 
 
 
 
 
 
 
 | 515 | 
 + | 
   DataBase.MaxConnections := 1; | 
 
 
 
 
 
 
 
 
 | 516 | 
 + | 
   DataBase.PageSize := 8112; | 
 
 
 
 
 
 
 
 
 | 517 | 
 + | 
   DataBase.PageCountInExtent := 8; | 
 
 
 
 
 
 
 
 
 | 518 | 
 + | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 519 | 
   | 
   DataBase.DatabaseName := 'OLDB'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 520 | 
   | 
   DataBase.DatabaseFileName := target; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 521 | 
   | 
   DataBase.CreateDatabase; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 529 | 
   | 
   Query := TABSQuery.Create(Self); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 530 | 
   | 
   Query.DatabaseName := 'OLDB'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 531 | 
   | 
   Query.SQL.Text := | 
 
 
 
 
 
 
 
 
 
 
 
 | 532 | 
 < | 
     'CREATE TABLE globals  ( id AUTOINC PRIMARY KEY, name STRING(128), value STRING(128) );'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 532 | 
 > | 
     'CREATE TABLE globals  ( id AUTOINC PRIMARY KEY, name STRING(128), ' + | 
 
 
 
 
 
 | 533 | 
 > | 
     'value STRING(128) );'; | 
 
 
 
 
 
 
 
 
 
 
 
 | 534 | 
   | 
   Query.ExecSQL; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 535 | 
   | 
   Query.SQL.Text := | 
 
 
 
 
 
 
 
 
 
 
 
 | 536 | 
 < | 
     'CREATE TABLE linkmap  ( id AUTOINC PRIMARY KEY, src_id INTEGER, src_link_offset INTEGER, target_id INTEGER );'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 536 | 
 > | 
     'CREATE TABLE linkmap  ( id AUTOINC PRIMARY KEY, src_id INTEGER, ' + | 
 
 
 
 
 
 | 537 | 
 > | 
     'src_link_offset INTEGER, target_id INTEGER,  INDEX idsrcid src_id, ' + | 
 
 
 
 
 
 | 538 | 
 > | 
     'INDEX iddestid target_id);'; | 
 
 
 
 
 
 
 
 
 
 
 
 | 539 | 
   | 
   Query.ExecSQL; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 540 | 
   | 
   Query.SQL.Text := | 
 
 
 
 
 
 
 
 
 
 
 
 | 541 | 
 < | 
     'CREATE TABLE rawmap  ( id AUTOINC PRIMARY KEY, src_id INTEGER, src_link_offset INTEGER, sep BOOLEAN, size INTEGER, data BLOB BlobCompressionMode 9 BlobBlockSize 1024 BlobCompressionAlgorithm ZLib );'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 541 | 
 > | 
     'CREATE TABLE rawmap  ( id AUTOINC PRIMARY KEY, src_id INTEGER, ' + | 
 
 
 
 
 
 | 542 | 
 > | 
     'src_link_offset INTEGER, sep BOOLEAN, size INTEGER, ' + | 
 
 
 
 
 
 | 543 | 
 > | 
     'data BLOB BlobCompressionMode 9 BlobBlockSize 1024 BlobCompressionAlgorithm ZLib, ' + | 
 
 
 
 
 
 | 544 | 
 > | 
     'INDEX idsrcid src_id);'; | 
 
 
 
 
 
 
 
 
 
 
 
 | 545 | 
   | 
   //    Query.SQL.Text:='CREATE TABLE rawmap  ( id AUTOINC PRIMARY KEY, src_id INTEGER, src_link_offset INTEGER, size INTEGER, data BLOB BlobCompressionAlgorithm None );'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 546 | 
   | 
   Query.ExecSQL; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 547 | 
   | 
   Query.SQL.Text := | 
 
 
 
 
 
 
 
 
 
 
 
 | 548 | 
 < | 
     'CREATE TABLE datfiles  ( id INTEGER PRIMARY KEY, extension CHAR(4), name STRING(128), contenttype INTEGER, size INTEGER, data BLOB BlobCompressionMode 9 BlobBlockSize 1024 BlobCompressionAlgorithm ZLib );'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 548 | 
 > | 
     'CREATE TABLE datfiles  ( id INTEGER PRIMARY KEY, extension CHAR(4), ' + | 
 
 
 
 
 
 | 549 | 
 > | 
     'name STRING(128), contenttype INTEGER, size INTEGER, ' + | 
 
 
 
 
 
 | 550 | 
 > | 
     'data BLOB BlobCompressionMode 9 BlobBlockSize 1024 BlobCompressionAlgorithm ZLib );'; | 
 
 
 
 
 
 
 
 
 
 
 
 | 551 | 
   | 
   //    Query.SQL.Text:='CREATE TABLE datfiles  ( id INTEGER PRIMARY KEY, extension CHAR(4), name STRING(128), contenttype INTEGER, size INTEGER, data BLOB BlobCompressionAlgorithm None );'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 552 | 
   | 
   Query.ExecSQL; | 
 
 
 
 
 
 
 
 
 
 
 
 | 553 | 
 < | 
   Query.SQL.Text := | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 554 | 
 < | 
     'CREATE TABLE extlist  ( id AUTOINC PRIMARY KEY, ext CHAR(4), ident CHAR(16) );'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 555 | 
 < | 
   Query.ExecSQL; | 
 
 
 
 
 
 
 
 
 
 | 553 | 
 > | 
 //  Query.SQL.Text := | 
 
 
 
 
 
 | 554 | 
 > | 
 //    'CREATE TABLE extlist  ( id AUTOINC PRIMARY KEY, ext CHAR(4), ident CHAR(16) );'; | 
 
 
 
 
 
 | 555 | 
 > | 
 //  Query.ExecSQL; | 
 
 
 
 
 
 
 
 
 
 
 
 | 556 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 557 | 
   | 
   Query.SQL.Text := 'INSERT INTO globals (name,value) VALUES ("dbversion","' + | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 558 | 
   | 
     dbversion + '");'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 561 | 
   | 
   for i := 0 to High(OniDataConnection.LevelInfo.Ident) do | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 562 | 
   | 
     Data[i] := OniDataConnection.LevelInfo.Ident[i]; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 563 | 
   | 
   temps := CreateHexString(Data, True); | 
 
 
 
 
 
 
 
 
 
 
 
 | 564 | 
 < | 
   Query.SQL.Text := 'INSERT INTO globals (name,value) VALUES ("ident","' + temps + '");'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 565 | 
 < | 
   Query.ExecSQL; | 
 
 
 
 
 
 
 
 
 
 | 564 | 
 > | 
 //  Query.SQL.Text := 'INSERT INTO globals (name,value) VALUES ("ident","' + temps + '");'; | 
 
 
 
 
 
 | 565 | 
 > | 
 //  Query.ExecSQL; | 
 
 
 
 
 
 
 
 
 
 
 
 | 566 | 
   | 
   Query.SQL.Text := 'INSERT INTO globals (name,value) VALUES ("lvl","' + | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 567 | 
   | 
     IntToStr(OniDataConnection.LevelInfo.LevelNumber) + '");'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 568 | 
   | 
   Query.ExecSQL; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 701 | 
   | 
   database.Free; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 702 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 703 | 
   | 
   CloseDataConnection(DataConnections[conIndex]); | 
 
 
 
 
 
 
 
 
 | 704 | 
 + | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 705 | 
   | 
 end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 706 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 707 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 708 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 709 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 710 | 
 < | 
 procedure TForm_LevelDB.stop_convert; | 
 
 
 
 
 
 
 
 
 
 | 710 | 
 > | 
 procedure TForm_LevelDB.StopConvert; | 
 
 
 
 
 
 
 
 
 
 
 
 | 711 | 
   | 
 begin | 
 
 
 
 
 
 
 
 
 
 
 
 | 712 | 
 < | 
   btn_abortok.Caption := '&Close'; | 
 
 
 
 
 
 
 
 
 
 | 712 | 
 > | 
 {  btn_abortok.Caption := '&Close'; | 
 
 
 
 
 
 
 
 
 
 
 
 | 713 | 
   | 
   btn_abortok.Default := True; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 714 | 
   | 
   converting := False; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 715 | 
   | 
   lbl_estimation.Caption := 'ABORTED'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 720 | 
   | 
   begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 721 | 
   | 
     DeleteFile(loaded_filename); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 722 | 
   | 
   end; | 
 
 
 
 
 
 
 
 
 
 
 
 | 723 | 
 < | 
 end; | 
 
 
 
 
 
 
 
 
 
 | 723 | 
 > | 
 }end; | 
 
 
 
 
 
 
 
 
 
 
 
 | 724 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 725 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 726 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 743 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 744 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 745 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 746 | 
 < | 
  | 
 
 
 
 
 
 
 
 
 
 | 746 | 
 > | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 | 747 | 
   | 
 procedure InsertDatLinkToDB(fileid: LongWord; offset: LongWord); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 748 | 
   | 
 var | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 749 | 
   | 
   link: LongWord; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1775 | 
   | 
   begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1776 | 
   | 
   end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1777 | 
   | 
 end; | 
 
 
 
 
 
 
 
 
 | 1778 | 
 + | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1779 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1780 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 1781 | 
 < | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1853 | 
 < | 
  | 
 
 
 
 
 
 
 
 
 
 | 1781 | 
 > | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1782 | 
   | 
 procedure InsertHandler(ext: String; needed: Boolean; handler: THandler); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1783 | 
   | 
 begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1784 | 
   | 
   SetLength(ConvertHandlers, Length(ConvertHandlers) + 1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1786 | 
   | 
   ConvertHandlers[High(ConvertHandlers)].needed  := needed; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1787 | 
   | 
   ConvertHandlers[High(ConvertHandlers)].handler := handler; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1788 | 
   | 
 end; | 
 
 
 
 
 
 
 
 
 
 
 
 | 1789 | 
 < | 
  | 
 
 
 
 
 
 
 
 
 
 | 1789 | 
 > | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 | 1790 | 
   | 
 begin | 
 
 
 
 
 
 
 
 
 
 
 
 | 1791 | 
 < | 
   InsertHandler('ABNA', False, nil); | 
 
 
 
 
 
 
 
 
 
 | 1791 | 
 > | 
 {  InsertHandler('ABNA', False, nil); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1792 | 
   | 
   //  InsertHandler('AGDB',True,AGDB); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1793 | 
   | 
   InsertHandler('AGDB', False, nil); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1794 | 
   | 
   InsertHandler('AGQC', False, nil); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1886 | 
   | 
   InsertHandler('WMM_', False, nil); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1887 | 
   | 
   InsertHandler('WMMB', True, WMMB); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1888 | 
   | 
   InsertHandler('WPGE', True, WPGE); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1889 | 
 < | 
 end. | 
 
 
 
 
 
 
 
 
 
 | 1889 | 
 > | 
 }end. |