--- oup/current/DataAccess/Access_OniArchive.pas 2007/07/17 22:27:16 241 +++ oup/current/DataAccess/Access_OniArchive.pas 2009/05/06 13:47:23 321 @@ -372,10 +372,10 @@ var begin if fileid < GetFileCount then begin + if not Assigned(Target) then + Target := TMemoryStream.Create; if GetFileInfo(FileID).Size > 0 then begin - if not Assigned(Target) then - Target := TMemoryStream.Create; if not FDatOpened then Fdat_file := TFileStream.Create(FFileName, fmOpenReadWrite); Fdat_file.Seek(Fdat_files[fileid].DatAddr, soFromBeginning); @@ -507,7 +507,7 @@ begin list := GetRawList(StrToInt(MidStr(dats.Strings[i], 1, 5))); for j := 0 to Length(list) - 1 do begin - if list[j].RawType = RawType then + if (list[j].RawType = RawType) and (list[j].RawSize > 0) then begin SetLength(Result, Length(Result)+1); Result[High(Result)] := list[j]; @@ -588,6 +588,8 @@ begin if fileid < GetFileCount then begin raw_info := Self.GetRawInfo(FileID, DatOffset); + if raw_info.RawSize = 0 then + exit; if not raw_info.LocSep then begin if not FRawOpened then