anchor.diff:      fs := TFileStream.Create(bankfilename,fmCreate);
       try
         fs.Size := 0;
  -      ms := TMemoryStream.Create;
  -      try
  -        Bank.SafeBox.SaveSafeBoxToAStream(ms,0,Bank.SafeBox.BlocksCount-1);
  -        ms.Position := 0;
  -        fs.Position := 0;
  -        fs.CopyFrom(ms,0);
  -      finally
  -        ms.Free;
  +      fs.Position:=0;
  +      if LowMemoryUsage then begin
  +        Bank.SafeBox.SaveSafeBoxToAStream(fs,0,Bank.SafeBox.BlocksCount-1);
  +      end else begin
  +        ms := TMemoryStream.Create;
  +        try
  +          Bank.SafeBox.SaveSafeBoxToAStream(ms,0,Bank.SafeBox.BlocksCount-1);
  +          ms.Position := 0;
  +          fs.CopyFrom(ms,0);
  +        finally
  +          ms.Free;
  +        end;
         end;
       finally
         fs.Free;
  
positive.code:         if (sr.Attr and FileAttrs) = FileAttrs then begin
            auxfn := folder+PathDelim+sr.Name;
            If LoadBankFileInfo(auxfn,sbHeader) then begin
              if (((max_block<0) Or (sbHeader.blocksCount<=max_block)) AND (sbHeader.blocksCount>blockscount)) And
                (sbHeader.startBlock=0) And (sbHeader.endBlock=sbHeader.startBlock+sbHeader.blocksCount-1) then begin
                filename := auxfn;
                blockscount := sbHeader.blocksCount;
  
negative.code:     Procedure SetBlockChainFile(BlockChainFileName : AnsiString);
      Function HasUpgradedToVersion2 : Boolean; override;
      Procedure CleanupVersion1Data; override;
      property LowMemoryUsage : Boolean read FLowMemoryUsage write FLowMemoryUsage;
    End;
  
  implementation
  