ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/oup/current/DataAccess/Access_OniArchive.pas
(Generate patch)

Comparing oup/current/DataAccess/Access_OniArchive.pas (file contents):
Revision 116 by alloc, Mon Feb 26 22:57:02 2007 UTC vs.
Revision 148 by alloc, Sun Apr 1 16:37:25 2007 UTC

# Line 38 | Line 38 | type
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;
# Line 444 | Line 445 | end;
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
# Line 455 | Line 457 | begin
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
# Line 473 | Line 476 | 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
# Line 485 | Line 489 | 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;
# Line 590 | Line 604 | begin
604    end;
605   end;
606  
607 +
608   procedure TAccess_OniArchive.UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TStream);
609   var
610    raw_info: TRawDataInfo;

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)