| 141 | 
   | 
   baselink, lastlink: Integer; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 142 | 
   | 
   links: Integer; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 143 | 
   | 
   Data:  TStream; | 
 
 
 
 
 
 
 
 
 | 144 | 
 + | 
   read:  Integer; | 
 
 
 
 
 
 
 
 
 | 145 | 
 + | 
   char:  Byte; | 
 
 
 
 
 
 
 
 
 | 146 | 
 + | 
   foundzeros: Byte; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 147 | 
   | 
 begin | 
 
 
 
 
 
 
 
 
 | 148 | 
 + | 
   SetLength(Result, 0); | 
 
 
 
 
 
 
 
 
 | 149 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 150 | 
   | 
   ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $18, 4, @baselink); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 151 | 
   | 
   ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $1C, 4, @links); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 152 | 
   | 
   if links > 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 153 | 
   | 
   begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 154 | 
   | 
     ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $20 + (links - 1) * 4, 4, @lastlink); | 
 
 
 
 
 
 
 
 
 
 | 150 | 
 – | 
 //    SetLength(Data, lastlink + 1024); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 155 | 
   | 
     Data := nil; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 156 | 
   | 
     TAccess_OniArchive(ConManager.Connection[ConnectionID]).LoadRawOffset( | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 157 | 
   | 
           False, baselink, lastlink + 1024, Data); | 
 
 
 
 
 
 
 
 
 
 
 
 | 158 | 
 < | 
 //    TOniDataDat(connection).LoadRawOffset(False, baselink, lastlink + 1024, Data); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 159 | 
 < | 
     //      connection.LoadRawFile(fileid,$1C,baselink,lastlink+1024,False,@data[0]); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 160 | 
 < | 
     raise ENotImplemented.Create('RawList.SUBT'); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 161 | 
 < | 
   end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 162 | 
 < | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 159 | 
 < | 
     k := 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 160 | 
 < | 
     for j := 0 to 1024 do | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 161 | 
 < | 
     begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 162 | 
 < | 
       if (Data[lastlink + j] = $00) or (j = 1024) then | 
 
 
 
 
 
 
 
 
 
 | 158 | 
 > | 
  | 
 
 
 
 
 
 | 159 | 
 > | 
     foundzeros := 0; | 
 
 
 
 
 
 | 160 | 
 > | 
     repeat | 
 
 
 
 
 
 | 161 | 
 > | 
       read := Data.Read(char, 1); | 
 
 
 
 
 
 | 162 | 
 > | 
       if (read > 0) and (char = 0) then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 163 | 
   | 
       begin | 
 
 
 
 
 
 
 
 
 
 
 
 | 164 | 
 < | 
         if j < 1024 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 165 | 
 < | 
         begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 166 | 
 < | 
           if k = 0 then | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 167 | 
 < | 
           begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 168 | 
 < | 
             k := 1; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 169 | 
 < | 
           end | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 170 | 
 < | 
           else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 171 | 
 < | 
           begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 172 | 
 < | 
             SetLength(Result, 1); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 173 | 
 < | 
             Result[0].src_offset := $18; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 174 | 
 < | 
             Result[0].raw_addr   := baselink; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 175 | 
 < | 
             Result[0].raw_size   := lastlink + j; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 176 | 
 < | 
             Break; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 177 | 
 < | 
           end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 178 | 
 < | 
         end; | 
 
 
 
 
 
 
 
 
 
 | 164 | 
 > | 
         Inc(foundzeros); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 165 | 
   | 
       end; | 
 
 
 
 
 
 
 
 
 | 166 | 
 + | 
     until (read = 0) or (foundzeros = 2); | 
 
 
 
 
 
 
 
 
 | 167 | 
 + | 
  | 
 
 
 
 
 
 
 
 
 | 168 | 
 + | 
     if foundzeros = 2 then | 
 
 
 
 
 
 
 
 
 | 169 | 
 + | 
     begin | 
 
 
 
 
 
 
 
 
 | 170 | 
 + | 
       SetLength(Result, 1); | 
 
 
 
 
 
 
 
 
 | 171 | 
 + | 
       Result[0].SrcID     := FileID; | 
 
 
 
 
 
 
 
 
 | 172 | 
 + | 
       Result[0].SrcOffset := $18; | 
 
 
 
 
 
 
 
 
 | 173 | 
 + | 
       Result[0].RawAddr   := baselink; | 
 
 
 
 
 
 
 
 
 | 174 | 
 + | 
       Result[0].RawSize   := Data.Position; | 
 
 
 
 
 
 
 
 
 | 175 | 
 + | 
       Result[0].LocSep    := False; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 176 | 
   | 
     end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 177 | 
   | 
   end; | 
 
 
 
 
 
 
 
 
 
 | 182 | 
 – | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 178 | 
   | 
 end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 179 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 180 | 
   | 
  |