anchor.diff:      pvSub: Pointer; pvSubLen: Integer): Pointer;
   var
     I, j: Integer;
  -  lvTempP, lvTempPSub, lvTempP2, lvTempPSub2:PByte;
  +  lvTempP, lvTempPSub, lvTempP2, lvTempPSub2:PAnsiChar;
   begin
     if (pvSub = nil) then
       Result := nil
  
positive.code:     Integer;
  var
    lvBufBlock: PMemoryBlock;
  
    lvPRes:Pointer;
  
    l, x, lvPosition:Cardinal;
  begin
    Result := -1;
    l := 0;
  
    lvBufBlock := FRead;
    lvPosition := FReadPosition;
  
    if lvBufBlock = nil then
    begin   // ͷʼ
      lvBufBlock := FHead;
      lvPosition := 0;
    end;
  
    if lvBufBlock <> nil then
    begin
      while lvBufBlock <> nil do
      begin
        lvPRes := SearchPointer(lvBufBlock.Memory, lvBufBlock.DataLen, lvPosition, subBuf, subBufLen);
        if lvPRes <> nil then
        begin
          x := PAnsiChar(lvPRes) - PAnsiChar(lvBufBlock.Memory) - lvPosition;
          Result := l + x;
          Break;
        end else
        begin
          l := l + lvBufBlock.DataLen - lvPosition;
  
          // һ
          lvBufBlock := lvBufBlock.NextEx;
          lvPosition := 0;
        end;
      end;
    end;
  end;
  
negative.code:   lvBuf, lvFreeBuf: PMemoryBlock;
  begin
    if FRead = nil then exit;
      lvBuf := FRead.PrevEx;
    while lvBuf <> nil do
    begin
      lvFreeBuf :=lvBuf;
  