--- oup/current/DataAccess/Access_OniArchive.pas 2007/02/25 17:20:22 113 +++ oup/current/DataAccess/Access_OniArchive.pas 2007/02/26 22:57:02 116 @@ -34,6 +34,7 @@ type procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TStream); overload; override; function GetDatLinks(FileID: Integer): TDatLinkList; override; + function GetDatLink(FileID, DatOffset: Integer): TDatLink; override; function GetRawList(FileID: Integer): TRawDataList; override; function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo; override; @@ -50,7 +51,7 @@ type implementation uses - SysUtils, StrUtils, Data, Functions, RawList; + SysUtils, StrUtils, Data, Functions, RawList, DatLinks; (* @@ -397,6 +398,39 @@ end; +function TAccess_OniArchive.GetDatLink(FileID, DatOffset: Integer): TDatLink; +var + link: Integer; +begin + Result := DatLinksManager.GetDatLink(FConnectionID, FileID, DatOffset); + LoadDatFilePart(fileid, Result.SrcOffset, 4, @link); + if link > 0 then + Result.DestID := link div 256 + else + Result.DestID := -1; +end; + + +function TAccess_OniArchive.GetDatLinks(FileID: Integer): TDatLinkList; +var + i: Integer; + link: Integer; +begin + Result := DatLinksManager.GetDatLinks(FConnectionID, FileID); + if Length(Result) > 0 then + begin + for i := 0 to High(Result) do + begin + LoadDatFilePart(fileid, Result[i].SrcOffset, 4, @link); + if link > 0 then + Result[i].DestID := link div 256 + else + Result[i].DestID := -1; + end; + end; +end; + + function TAccess_OniArchive.GetRawList(FileID: Integer): TRawDataList; begin Result := RawLists.GetRawList(FConnectionID, FileID);