38 |
|
function GetRawList(FileID: Integer): TRawDataList; override; |
39 |
|
function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo; override; |
40 |
|
|
41 |
< |
procedure LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; target: Pointer); |
41 |
> |
procedure LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; var target: TStream); overload; |
42 |
> |
procedure LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; target: Pointer); overload; |
43 |
|
procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TStream); overload; override; |
44 |
|
procedure UpdateRawFile(FileID, DatOffset: Integer; Src: TStream); overload; override; |
45 |
|
procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TStream); overload; override; |
445 |
|
|
446 |
|
|
447 |
|
|
448 |
< |
|
448 |
< |
procedure TAccess_OniArchive.LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; target: Pointer); |
448 |
> |
procedure TAccess_OniArchive.LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; var target: TStream); |
449 |
|
begin |
450 |
+ |
if not Assigned(Target) then |
451 |
+ |
Target := TMemoryStream.Create; |
452 |
|
if not LocSep then |
453 |
|
begin |
454 |
|
if not FRawOpened then |
457 |
|
if RawAddr <= Fraw_file.Size then |
458 |
|
begin |
459 |
|
Fraw_file.Seek(RawAddr, soFromBeginning); |
460 |
< |
Fraw_file.Read(target^, size); |
460 |
> |
Target.CopyFrom(Fraw_file, size); |
461 |
> |
Target.Seek(0, soFromBeginning); |
462 |
|
end; |
463 |
|
if UnloadWhenUnused then |
464 |
|
begin |
476 |
|
if RawAddr <= Fsep_file.Size then |
477 |
|
begin |
478 |
|
Fsep_file.Seek(RawAddr, soFromBeginning); |
479 |
< |
Fsep_file.Read(target^, size); |
479 |
> |
Target.CopyFrom(Fsep_file, size); |
480 |
> |
Target.Seek(0, soFromBeginning); |
481 |
|
end; |
482 |
|
if UnloadWhenUnused then |
483 |
|
begin |
489 |
|
end; |
490 |
|
end; |
491 |
|
|
492 |
+ |
procedure TAccess_OniArchive.LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; target: Pointer); |
493 |
+ |
var |
494 |
+ |
data: TStream; |
495 |
+ |
begin |
496 |
+ |
data := nil; |
497 |
+ |
LoadRawOffset(LocSep, RawAddr, Size, data); |
498 |
+ |
data.Read(Target^, Size); |
499 |
+ |
data.Free; |
500 |
+ |
end; |
501 |
+ |
|
502 |
|
procedure TAccess_OniArchive.LoadRawFile(FileID, DatOffset: Integer; var Target: TStream); |
503 |
|
var |
504 |
|
raw_info: TRawDataInfo; |
604 |
|
end; |
605 |
|
end; |
606 |
|
|
607 |
+ |
|
608 |
|
procedure TAccess_OniArchive.UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TStream); |
609 |
|
var |
610 |
|
raw_info: TRawDataInfo; |