--- oup/current/DataAccess/Access_OniArchive.pas 2007/06/20 10:57:51 229 +++ oup/current/DataAccess/Access_OniArchive.pas 2007/06/20 22:24:04 231 @@ -369,21 +369,24 @@ var begin if fileid < GetFileCount 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); - streampos := Target.Position; - Target.CopyFrom(Fdat_file, Fdat_files[fileid].Size); - Target.Seek(streampos, soFromBeginning); - if UnloadWhenUnused then + if GetFileInfo(FileID).Size > 0 then begin - Fdat_file.Free; - FDatOpened := False; - end - else - FDatOpened := True; + 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); + streampos := Target.Position; + Target.CopyFrom(Fdat_file, Fdat_files[fileid].Size); + Target.Seek(streampos, soFromBeginning); + if UnloadWhenUnused then + begin + Fdat_file.Free; + FDatOpened := False; + end + else + FDatOpened := True; + end; end; end;