anchor.diff:      procedure Trim(const ACharSet: TWideCharSet); overload; inline;
       procedure TrimLeft(); overload; inline;
       procedure TrimLeft(const ACharSet: TWideCharSet); overload; inline;
  +    procedure TrimLeft(const ASymbolsCount: Integer); overload; inline;
       procedure TrimRight(); overload; inline;
       procedure TrimRight(const ACharSet: TWideCharSet); overload; inline;
  +    procedure TrimRight(const ASymbolsCount: Integer); overload; inline;
   
       function TrimF(): TSvString; overload; inline;
       function TrimF(const ACharSet: TWideCharSet): TSvString; overload; inline;
       function TrimLeftF(): TSvString; overload; inline;
       function TrimLeftF(const ACharSet: TWideCharSet): TSvString; overload; inline;
  +    function TrimLeftF(const ASymbolsCount: Integer): TSvString; overload; inline;
       function TrimRightF(): TSvString; overload; inline;
       function TrimRightF(const ACharSet: TWideCharSet): TSvString; overload; inline;
  +    function TrimRightF(const ASymbolsCount: Integer): TSvString; overload; inline;
   
       procedure ToUpper(); inline;
       procedure ToUpperInvariant(); inline;
  
positive.code:   FValue := CEmpty;
  end;
  
  function TSvString.TrimLeftF(const ACharSet: TWideCharSet): TSvString;
  begin
    Result.FValue := FValue;
  
negative.code:   BinToHex(s1[1], PWideChar(Result), System.Length(s1) * SizeOf(Char));
  end;
  
  procedure TSvString.TrimRight(const ASymbolsCount: Integer);
  begin
    FValue := System.Copy(FValue, 1, Length - ASymbolsCount);
  end;
  
  function TSvString.TrimRightF(const ASymbolsCount: Integer): TSvString;
  begin
    Result.FValue := FValue;
    Result.TrimRight(ASymbolsCount);
  end;
  
  { TSvString.TEnumerator }
  
  constructor TSvString.TEnumerator.Create(const AString: string);
  