anchor.diff:  
   end;
   
  +function StrSkipChars(const src :String; pvChars:TSysCharSet): String;
  +var
  +  lvPtr:PChar;
  +begin
  +  lvPtr := PChar(src);
  +  SkipChars(lvPtr, pvChars);
  +  Result := lvPtr;
  +end;
  +
  +function RightStr(const s:string; count:Integer): String;
  +var
  +  lvPtr :PChar;
  +  l:Integer;
  +begin
  +  l := Length(s);
  +  if l < count then
  +  begin
  +    Result :=s ;
  +  end else
  +  begin
  +    lvPtr := PChar(s);
  +    Result := SkipN(lvPtr, l - count);
  +  end;
  +end;
  +
  +function SkipN(p: PChar; n: Integer): PChar;
  +var
  +  i:Integer;
  +begin
  +  i := 0;
  +  while (p^ <> #0) and (i<n) do
  +  begin
  +    Inc(P);
  +    Inc(i);
  +  end;
  +  Result := P;   
  +end;
  +
  +function LeftStr(const s:string; count:Integer): String;
  +begin
  +  Result := s;
  +  if Length(Result) > count then
  +  begin
  +    SetLength(Result, count);
  +  end;  
  +end;
  +
   constructor TDStringWBuilder.Create;
   begin
     inherited Create;
  
positive.code:   l := Length(s);
    SetLength(lvStr, l);
    times := 0;
    for i := Low(s) to high(s) do
    begin
      if not CharInSet(s[i], pvCharSets) then
      begin
  
negative.code: /// <param name="p"> Դ(ַ)ʼλ, ƥɹpvChars״γλ, 򲻻ƶ</param>
  function LeftUntil(var p: PChar; pvChars: TSysCharSet; var vLeftStr: string):
      Integer; overload;
  
  
  
  /// <summary>
  