| 24 | 
   | 
 implementation | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 25 | 
   | 
 {$R *.dfm} | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 26 | 
   | 
 uses ABSMain, ABSDecUtil, Main, | 
 
 
 
 
 
 
 
 
 
 
 
 | 27 | 
 < | 
     ConnectionManager, TypeDefs, DataAccess, OniImgClass, Data, RawList; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 27 | 
 > | 
     ConnectionManager, TypeDefs, DataAccess, OniImgClass, Data, RawList,  | 
 
 
 
 
 
 | 28 | 
 > | 
   Access_OniArchive; | 
 
 
 
 
 
 
 
 
 
 
 
 | 29 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 30 | 
   | 
 var | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 31 | 
   | 
   Converting:  Boolean = False; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 203 | 
   | 
   Stream_Names := TMemoryStream.Create; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 204 | 
   | 
   Stream_Dat   := TFileStream.Create(Target, fmCreate); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 205 | 
   | 
   Stream_Raw   := TFileStream.Create(AnsiReplaceStr(Target, '.dat', '.raw'), fmCreate); | 
 
 
 
 
 
 
 
 
 | 206 | 
 + | 
   Stream_Raw.Write(EmptyBytes[0], 32); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 207 | 
   | 
   if Connection.DataOS in [DOS_WINDEMO, DOS_MAC, DOS_MACBETA] then | 
 
 
 
 
 
 
 
 
 | 208 | 
 + | 
   begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 209 | 
   | 
     Stream_Sep := TFileStream.Create(AnsiReplaceStr(Target, '.dat', '.sep'), fmCreate); | 
 
 
 
 
 
 
 
 
 | 210 | 
 + | 
     Stream_Sep.Write(EmptyBytes[0], 32); | 
 
 
 
 
 
 
 
 
 | 211 | 
 + | 
   end; | 
 
 
 
 
 
 
 
 
 | 212 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 213 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 214 | 
   | 
   DoStep('Creating header'); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 215 | 
   | 
   progress.Position      := 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 238 | 
   | 
   for i := 0 to High(DatHeader.OSIdent) do | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 239 | 
   | 
     case Connection.DataOS of | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 240 | 
   | 
       DOS_WIN: DatHeader.OSIdent[i] := HeaderOSIdentWin[i]; | 
 
 
 
 
 
 
 
 
 
 
 
 | 241 | 
 < | 
       DOS_MAC: DatHeader.OSIdent[i] := HeaderOSIdentMac[i]; | 
 
 
 
 
 
 
 
 
 
 | 241 | 
 > | 
       DOS_MAC, DOS_WINDEMO: DatHeader.OSIdent[i] := HeaderOSIdentMac[i]; | 
 
 
 
 
 
 
 
 
 
 
 
 | 242 | 
   | 
       DOS_MACBETA: DatHeader.OSIdent[i] := HeaderOSIdentMacBeta[i]; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 243 | 
   | 
     end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 244 | 
   | 
   for i := 0 to High(DatHeader.GlobalIdent) do | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 279 | 
   | 
     begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 280 | 
   | 
       case Connection.DataOS of | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 281 | 
   | 
         DOS_WIN:     ExtensionsHeader[i].Ident := FileTypes[j].IdentWin; | 
 
 
 
 
 
 
 
 
 
 
 
 | 282 | 
 < | 
         DOS_WINDEMO: ExtensionsHeader[i].Ident := FileTypes[j].IdentMac; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 282 | 
 > | 
         DOS_WINDEMO: | 
 
 
 
 
 
 | 283 | 
 > | 
             if FileTypes[j].Extension = 'SNDD' then | 
 
 
 
 
 
 | 284 | 
 > | 
               ExtensionsHeader[i].Ident := FileTypes[j].IdentWin | 
 
 
 
 
 
 | 285 | 
 > | 
             else | 
 
 
 
 
 
 | 286 | 
 > | 
               ExtensionsHeader[i].Ident := FileTypes[j].IdentMac; | 
 
 
 
 
 
 
 
 
 
 
 
 | 287 | 
   | 
         DOS_MAC:     ExtensionsHeader[i].Ident := FileTypes[j].IdentMac; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 288 | 
   | 
         DOS_MACBETA: ExtensionsHeader[i].Ident := FileTypes[j].IdentMac; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 289 | 
   | 
       end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 365 | 
   | 
       DatFileStream.Seek(0, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 366 | 
   | 
       Stream_Body.CopyFrom(DatFileStream, DatFileStream.Size); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 367 | 
   | 
       if (Stream_Body.Size mod 32) > 0 then | 
 
 
 
 
 
 
 
 
 | 368 | 
 + | 
       begin | 
 
 
 
 
 
 
 
 
 | 369 | 
 + | 
         ShowMessage( | 
 
 
 
 
 
 
 
 
 | 370 | 
 + | 
             IntToStr(FileID) + '-' + FileInfo.Name + '.' + FileInfo.Extension + #13#10 + | 
 
 
 
 
 
 
 
 
 | 371 | 
 + | 
             IntToStr(FileInfo.Size) + ' - 0x' + IntToHex(FileInfo.Size, 6) + ' - real: ' + IntToStr(DatFileStream.Size) + ' - 0x' + IntToHex(DatFileStream.Size, 6) + #13#10 + | 
 
 
 
 
 
 
 
 
 | 372 | 
 + | 
             IntToStr(Stream_Body.Size) + ' - 0x' + IntToHex(Stream_Body.Size, 6) ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 373 | 
   | 
         Stream_Body.Write(EmptyBytes[0], 32 - (Stream_Body.Size mod 32)); | 
 
 
 
 
 
 
 
 
 | 374 | 
 + | 
       end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 375 | 
   | 
     end | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 376 | 
   | 
     else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 377 | 
   | 
       FilesHeader[FileID].DataAddr := 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 495 | 
   | 
     begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 496 | 
   | 
       DeleteFile(target); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 497 | 
   | 
     end; | 
 
 
 
 
 
 
 
 
 
 
 
 | 498 | 
 < | 
 end; | 
 
 
 
 
 
 
 
 
 
 | 498 | 
 > | 
   end; | 
 
 
 
 
 
 
 
 
 
 
 
 | 499 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 500 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 501 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 636 | 
   | 
   DoStep('Writing .dat-fileslist'); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 637 | 
   | 
   Application.ProcessMessages; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 638 | 
   | 
  | 
 
 
 
 
 
 
 
 
 | 639 | 
 + | 
   TAccess_OniArchive(Connection).UnloadWhenUnused := False; | 
 
 
 
 
 
 
 
 
 | 640 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 641 | 
   | 
   FileTime := Time; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 642 | 
   | 
   Database.StartTransaction; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 643 | 
   | 
   for FileID := 0 to Connection.GetFileCount - 1 do | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 682 | 
   | 
               BoolToStr(RawLinks[i].LocSep) + ', 0);'; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 683 | 
   | 
             Query.ExecSQL; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 684 | 
   | 
           end; | 
 
 
 
 
 
 
 
 
 
 | 667 | 
 – | 
           if ((i mod 100) = 0) and (FileID > 0) then | 
 
 
 
 
 
 
 
 
 
 | 668 | 
 – | 
           begin | 
 
 
 
 
 
 
 
 
 
 | 669 | 
 – | 
             Database.Commit(False); | 
 
 
 
 
 
 
 
 
 
 | 670 | 
 – | 
             Database.StartTransaction; | 
 
 
 
 
 
 
 
 
 
 | 671 | 
 – | 
           end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 685 | 
   | 
         end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 686 | 
   | 
       end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 687 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 735 | 
   | 
   btn_abortok.Default := True; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 736 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 737 | 
   | 
   converting := False; | 
 
 
 
 
 
 
 
 
 | 738 | 
 + | 
   TAccess_OniArchive(Connection).UnloadWhenUnused := True; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 739 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 740 | 
   | 
   Query.Close; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 741 | 
   | 
   Query.Free; |