anchor.diff:      FFDICabInfo      : FDICabInfo;
       FErrors          : CabErrorRecord;
       FItemInProgress  : TAbCabItem;
  +    FItemStream      : TStream;
       FIIPName         : string;
       FItemProgress    : DWord;
       FNextCabinet     : string;
  
positive.code:       end;
      FDINT_Close_File_Info :
        begin
          FileSetDate(pfdin^.hf, Longint(pfdin^.date) shl 16 + pfdin^.time);
          _lclose(pfdin^.hf);
          // [ 880505 ]  Need to Set Attributes after File is closed {!!.05}
          AbFileSetAttr(Archive.FIIPName, pfdin^.attribs);
          Archive.DoCabItemProcessed;
        end;
    end;
  
negative.code: procedure TAbCabArchive.ExtractItemToStreamAt(Index : Integer; OutStream : TStream);
  begin
    {not implemented for cabinet archives}
    FItemInProgress := GetItem(Index);
    FItemStream := OutStream;
    try
      if not FDICopy(FFDIContext, PAnsiChar(FCabName), PAnsiChar(FCabPath), 0,
                     @FDI_ExtractFiles, nil, Self) then
        DoProcessItemFailure(FItemInProgress, ptExtract, ecCabError, 0);
    finally
      FItemStream := nil;
    end;
  end;
  {----------------------------------------------------------------------------}
  function TAbCabArchive.GetItem(ItemIndex : Integer) : TAbCabItem;
  