problem updating a root file

From: mayer@ik1.fzk.de
Date: Mon Jul 13 1998 - 10:43:12 MEST


Dear rooters..

Sorry for this question, but I checked tutorials and documentation without
success. My problem: Once I closed a root file, im not able to write again
into an already created directory. The newly written object appears
in memory but not on disk. After closing and reopening the file it is lost.
ALso I cant delete an object after reopening the file.
So what is wrong with the following test macro??


{
   gROOT.Reset();
   TFile file("test.root","recreate");
   gDirectory->mkdir("dir1");
   gDirectory->cd("dir1");
   named = new TNamed("amo","amo");
   named->Write("amo");
   gDirectory->ls();
   file->Write();
   file->Close();
   printf("------file closed-------\n");

   TFile file("test.root","update");
   gDirectory->cd("dir1");
   named = new TNamed("eva","eva");
   named->Write("eva");
   gDirectory->ls();
   file->Write();
   file->Close();
   printf("------file closed-------\n");
   
   TFile file("test.root","update");
   gDirectory->cd("dir1");
   gDirectory->ls();
}

and this is the output:

root [0] .x new.C
TDirectory*             dir1    dir1
 KEY: TNamed    amo;1   amo
TFile Writing Name=test.root Title=
------file closed-------
TDirectory*             dir1    dir1
 KEY: TNamed    amo;1   amo
 KEY: TNamed    eva;1   eva
TFile Writing Name=test.root Title=
------file closed-------
TDirectory*             dir1    dir1
 KEY: TNamed    amo;1   amo
root [1]
--------------------------------------------------

and eva is lost!
Thanks in advance 
                  Hajo!     



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:35 MET