anchor.diff:  
   end;
   
  +function StrStrIgnoreCase(P, PSub: PChar): PChar;
  +var
  +  I: Integer;
  +  lvSubUP: String;
  +begin
  +  Result := nil;
  +  if (P = nil) or (PSub = nil) then
  +    Exit;
  +  lvSubUP := UpperCase(PSub);
  +  PSub := PWideChar(lvSubUP);
  +  while P^ <> #0 do
  +  begin
  +    if UpperChar(P^) = PSub^ then
  +    begin
  +      I := 1;
  +      while PSub[I] <> #0 do
  +      begin
  +        if UpperChar(P[I]) = PSub[I] then
  +          Inc(I)
  +        else
  +          Break;
  +      end;
  +      if PSub[I] = #0 then
  +      begin
  +        Result := P;
  +        Break;
  +      end;
  +    end;
  +    Inc(P);
  +  end;
  +end;
  +
  +function StrStr(P: PChar; PSub: PChar): PChar;
  +var
  +  I: Integer;
  +begin
  +{$IFDEF MSWINDOWS}
  +{$IFDEF UNICODE}
  +  if Assigned(VCStrStrW) then
  +  begin
  +    Result := VCStrStrW(P, PSub);
  +    Exit;
  +  end;
  +{$ELSE}
  +  if Assigned(VCStrStr) then
  +  begin
  +    Result := VCStrStr(P, PSub);
  +    Exit;
  +  end;
  +{$ENDIF}
  +{$ENDIF}
  +
  +  if (PSub = nil) or (PSub^ = #0) then
  +    Result := P
  +  else
  +  begin
  +    Result := nil;
  +    while P^ <> #0 do
  +    begin
  +      if P^ = PSub^ then
  +      begin
  +        I := 1;     // ӺڶַʼԱ
  +        while PSub[I] <> #0 do
  +        begin
  +          if P[I] = PSub[I] then
  +            Inc(I)
  +          else
  +            Break;
  +        end;
  +
  +        if PSub[I] = #0 then
  +        begin  // P1P2Ѿƥ䵽ĩβ(ƥɹ)
  +          Result := P;
  +          Break;
  +        end;
  +      end;
  +      Inc(P);
  +    end;
  +  end;
  +end;
  +
  +
  +initialization
  +
  +{$IFDEF MSWINDOWS}
  +hMsvcrtl := LoadLibrary('msvcrt.dll');
  +if hMsvcrtl <> 0 then
  +begin
  +  VCStrStr := TMSVCStrStr(GetProcAddress(hMsvcrtl, 'strstr'));
  +  VCStrStrW := TMSVCStrStrW(GetProcAddress(hMsvcrtl, 'wcsstr'));
  +  VCMemCmp := TMSVCMemCmp(GetProcAddress(hMsvcrtl, 'memcmp'));
  +end
  +else
  +begin
  +  VCStrStr := nil;
  +  VCStrStrW := nil;
  +  VCMemCmp := nil;
  +end;
  +{$ENDIF}
  +
  +finalization
  +
  +{$IFDEF MSWINDOWS}
  +if hMsvcrtl <> 0 then
  +  FreeLibrary(hMsvcrtl);
  +{$ENDIF}
  +
   end.
  
positive.code: function URLEncode(S: string; pvIsPostData: Boolean = true): URLString;
  
  
  /// <summary>procedure ValueOfName
  /// </summary>
  /// <returns> String
  /// </returns>
  /// <param name="pvStrings"> (TStrings) </param>
  /// <param name="pvName"> (string) </param>
  /// <param name="pvSpliters"> ֵֺķָ </param>
  function ValueOfName(pvStrings: TStrings; const pvName: string; pvSpliters:
      TSysCharSet; pvTrim: Boolean): String;
  
  
  
  implementation
  
  {$if CompilerVersion < 20}
  function CharInSet(C: Char; const CharSet: TSysCharSet): Boolean;
  
negative.code:   Result := C in CharSet;
  end;
  {$ifend}
  
  
  function UpperChar(c: Char): Char;
  begin
    {$IFDEF UNICODE}
    if (c >= #$61) and (c <= #$7A) then
      Result := Char(PWord(@c)^ xor $20)
    else
      Result := c;
    {$ELSE}
    if (c >= $61) and (c <= $7A) then
      Result := c xor $20
    else
      Result := c;
    {$ENDIF}
  end;
  
  
  function SkipUntil(var p:PChar; pvChars: TSysCharSet): Integer;
  