--- oup/current/Helper/LevelDB.pas 2007/03/28 01:17:24 130 +++ oup/current/Helper/LevelDB.pas 2007/03/28 02:23:44 133 @@ -65,11 +65,8 @@ var Stream_Body, Stream_Names: TMemoryStream; Stream_Dat, Stream_Raw, Stream_Sep: TFileStream; -// Data, rawdata: Tdata; BeginTime, FileTime: Double; Step: Integer; -// rawlist: TRawDataList; -// datlinks: TDatLinks; OniImage: TOniImage; LevelID: Integer; TimeFormat: TFormatSettings; @@ -90,6 +87,12 @@ var RawLinks: TRawDataList; DatFileStream, RawFileStream: TMemoryStream; + +// ########################### + datsum, linksum, rawsum: Int64; + freq: Int64; + tempticks1, tempticks2: Int64; +// ########################### const Steps: Byte = 3; @@ -151,18 +154,20 @@ begin begin ShowMessage('Couldn''t delete file. Aborting'); Exit; - end else if not DeleteFile(AnsiReplaceStr(Target, '.dat', '.raw')) then - begin - ShowMessage('Couldn''t delete file. Aborting'); - Exit; - end else if Connection.DataOS in [DOS_WINDEMO, DOS_MAC, DOS_MACBETA] then - begin - if not DeleteFile(AnsiReplaceStr(Target, '.dat', '.sep')) then + end; + if FileExists(AnsiReplaceStr(Target, '.dat', '.raw')) then + if not DeleteFile(AnsiReplaceStr(Target, '.dat', '.raw')) then begin ShowMessage('Couldn''t delete file. Aborting'); Exit; end; - end; + if FileExists(AnsiReplaceStr(Target, '.dat', '.sep')) then + if Connection.DataOS in [DOS_WINDEMO, DOS_MAC, DOS_MACBETA] then + if not DeleteFile(AnsiReplaceStr(Target, '.dat', '.sep')) then + begin + ShowMessage('Couldn''t delete file. Aborting'); + Exit; + end; end else begin ShowMessage('Aborting'); Exit; @@ -278,6 +283,11 @@ begin lbl_estimation.Caption := 'Estimated finishing time: unknown'; Application.ProcessMessages; + QueryPerformanceFrequency(freq); + datsum := 0; + linksum := 0; + rawsum := 0; + FileTime := Time; for FileID := 0 to DatHeader.Files - 1 do begin @@ -286,12 +296,18 @@ begin FilesHeader[FileID].Extension[j] := FileInfo.Extension[4 - j]; if FileInfo.Size > 0 then begin + QueryPerformanceCounter(tempticks1); + FilesHeader[FileID].DataAddr := Stream_Body.Size + 8; DatFileStream := TMemoryStream.Create; Connection.LoadDatFile(FileID, TStream(DatFileStream)); - DatFileStream.Seek(4, soFromBeginning); + DatFileStream.Seek(0, soFromBeginning); + DatFileStream.Write(FileID, 4); DatFileStream.Write(LevelID, 4); + QueryPerformanceCounter(tempticks2); + datsum := datsum + (tempticks2 - tempticks1); + DatLinks := Connection.GetDatLinks(FileID); if Length(DatLinks) > 0 then begin @@ -306,6 +322,9 @@ begin end; end; + QueryPerformanceCounter(tempticks1); + linksum := linksum + (tempticks1 - tempticks2); + RawLinks := Connection.GetRawList(FileID); if Length(RawLinks) > 0 then begin @@ -332,6 +351,9 @@ begin end; DatFileStream.Seek(0, soFromBeginning); Stream_Body.CopyFrom(DatFileStream, DatFileStream.Size); + + QueryPerformanceCounter(tempticks2); + rawsum := rawsum + (tempticks2 - tempticks1); end else FilesHeader[i].DataAddr := 0; @@ -354,6 +376,11 @@ begin Application.ProcessMessages; end; + ShowMessage('AvgDats: ' + FloatToStr((datsum / progress.Max) / freq) + #13#10 + + 'AvgLinks: ' + FloatToStr((linksum / progress.Max) / freq) + #13#10 + + 'AvgRaws: ' + FloatToStr((rawsum / progress.Max) / freq) + ); + Stream_Dat.Write(DatHeader, SizeOf(DatHeader)); for i := 0 to High(FilesHeader) do Stream_Dat.Write(FilesHeader[i], SizeOf(FilesHeader[i])); @@ -365,6 +392,7 @@ begin DatHeader.DataSize := Stream_Body.Size; DatHeader.NamesSize := Stream_Names.Size; DatHeader.DataAddr := Stream_Dat.Size; + Stream_Body.Seek(0, soFromBeginning); Stream_Dat.CopyFrom(Stream_Body, Stream_Body.Size); DatHeader.NamesAddr := Stream_Dat.Size;