65 |
|
Stream_Body, Stream_Names: TMemoryStream; |
66 |
|
Stream_Dat, Stream_Raw, Stream_Sep: TFileStream; |
67 |
|
|
68 |
– |
// Data, rawdata: Tdata; |
68 |
|
BeginTime, FileTime: Double; |
69 |
|
Step: Integer; |
71 |
– |
// rawlist: TRawDataList; |
72 |
– |
// 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 |
|
|
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); |
305 |
|
DatFileStream.Write(LevelID, 4); |
306 |
|
|
307 |
+ |
QueryPerformanceCounter(tempticks2); |
308 |
+ |
datsum := datsum + (tempticks2 - tempticks1); |
309 |
+ |
|
310 |
|
DatLinks := Connection.GetDatLinks(FileID); |
311 |
|
if Length(DatLinks) > 0 then |
312 |
|
begin |
321 |
|
end; |
322 |
|
end; |
323 |
|
|
324 |
+ |
QueryPerformanceCounter(tempticks1); |
325 |
+ |
linksum := linksum + (tempticks1 - tempticks2); |
326 |
+ |
|
327 |
|
RawLinks := Connection.GetRawList(FileID); |
328 |
|
if Length(RawLinks) > 0 then |
329 |
|
begin |
350 |
|
end; |
351 |
|
DatFileStream.Seek(0, soFromBeginning); |
352 |
|
Stream_Body.CopyFrom(DatFileStream, DatFileStream.Size); |
353 |
+ |
|
354 |
+ |
QueryPerformanceCounter(tempticks2); |
355 |
+ |
rawsum := rawsum + (tempticks2 - tempticks1); |
356 |
|
end |
357 |
|
else |
358 |
|
FilesHeader[i].DataAddr := 0; |
375 |
|
Application.ProcessMessages; |
376 |
|
end; |
377 |
|
|
378 |
+ |
ShowMessage('AvgDats: ' + FloatToStr((datsum / progress.Max) / freq) + #13#10 + |
379 |
+ |
'AvgLinks: ' + FloatToStr((linksum / progress.Max) / freq) + #13#10 + |
380 |
+ |
'AvgRaws: ' + FloatToStr((rawsum / progress.Max) / freq) |
381 |
+ |
); |
382 |
+ |
|
383 |
|
Stream_Dat.Write(DatHeader, SizeOf(DatHeader)); |
384 |
|
for i := 0 to High(FilesHeader) do |
385 |
|
Stream_Dat.Write(FilesHeader[i], SizeOf(FilesHeader[i])); |