anchor.diff:        read FDirectoryOffset write FDirectoryOffset;
       property StartDiskNumber : Word
         read FStartDiskNumber write FStartDiskNumber;
  -    property ZipfileCommentLength : Word
  -      read FZipfileCommentLength write FZipfileCommentLength;
  -    property ZipfileComment : PChar
  +    property ZipfileComment : string
         read FZipfileComment write FZipfileComment;
       property IsValid : Boolean
         read GetValid;
  
positive.code:     Read( FTotalEntries, sizeof( FTotalEntries ) );
      Read( FDirectorySize, sizeof( FDirectorySize ) );
      Read( FDirectoryOffset, sizeof( FDirectoryOffset ) );
      Read( FZipfileCommentLength, sizeof( FZipfileCommentLength ) );
  
      if FZipfileCommentLength > 0 then begin
        FZipfileComment := StrAlloc( succ( FZipfileCommentLength ) );
        Read( FZipfileComment^, FZipfileCommentLength );
        FZipfileComment[FZipfileCommentLength] := #0;
      end;
    end;
    if not IsValid then
  
negative.code: end;
  { -------------------------------------------------------------------------- }
  procedure TAbZipDirectoryFileFooter.LoadFromStream( Stream : TStream );
  var
    iZipfileCommentLength: Word;
    sAnsi: Ansistring;
  begin
    with Stream do begin
      Read( FSignature, sizeof( FSignature ) );
  