anchor.diff:  uses
     AbExcept;
   
  -{$WARN UNIT_PLATFORM OFF}  
  +{$WARN UNIT_PLATFORM OFF}
   {$WARN SYMBOL_PLATFORM OFF}
   
   type
  
positive.code:   {Open an existing cabinet}
  var
    Abort : Boolean;
  begin
      {verify that the archive can be opened and is a cabinet}
    FFileHandle := FileOpen(FArchiveName, fmOpenRead or fmShareDenyNone);
    if (FFileHandle <= 0) then
      raise EAbReadError.Create;
    if not FDIIsCabinet(FFDIContext, FFileHandle, @FFDICabInfo) then begin
      CloseCabFile;
      raise EAbInvalidCabFile.Create;
    end;
  
      {store information about the cabinet}
    FileClose(FFileHandle);
    FCabSize := FFDICabInfo.cbCabinet;
    FFolderCount := FFDICabInfo.cFolders;
    FFileCount := FFDICabInfo.cFiles;
  
negative.code:     FFDIContext      : HFDI;
      FFDICabInfo      : FDICabInfo;
      FErrors          : CabErrorRecord;
      FItemInProgress  : TAbCabItem;
      FIIPName         : string;
      FItemProgress    : DWord;
  