--- oup/current/DataAccess/Access_OniArchive.pas 2007/06/04 22:07:29 209 +++ oup/current/DataAccess/Access_OniArchive.pas 2007/06/20 22:24:04 231 @@ -160,6 +160,8 @@ begin FBackend := DB_ONI; FConnectionID := ConnectionID; FChangeRights := [CR_EditDat, CR_EditRaw, CR_AppendRaw]; + + inherited; end; @@ -367,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;