| 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; |