anchor.diff:  function StringToUtf8Bytes(const pvData: String; pvBytes: TBytes): Integer;
       overload;
   function StringToUtf8Bytes(const pvData: string; pvProcessEndByte: Boolean = false): TBytes; overload;
  +
  +
  +function StringWToUtf8Bytes(const Source: PDCharW; SourceChars:Cardinal;
  +    pvDest: TBytes; MaxDestBytes: Cardinal): Cardinal; overload;
  +
  +function StringWToUtf8Bytes(const pvSourceData: DStringW): TBytes; overload;
  +
  +
   /// <summary>
   ///
   /// </summary>
  
positive.code: end;
  
  procedure TDStringBuilder.SaveToStream(pvStream:TStream);
  begin
    if self.Length <> 0 then pvStream.WriteBuffer(FData[0], self.Length);
  end;
  
  function TDStringBuilder.ToString: string;
  
negative.code:   end;
  end;
  
  procedure WriteStringToUtf8NoBOMFile(const pvFile: String; const pvData:
      DStringW);
  var
    lvStream: TMemoryStream;
    lvBytes:TBytes;
  
  begin
    lvStream := TMemoryStream.Create;
    try
      lvBytes := StringWToUtf8Bytes(pvData);
  
      lvStream.Write(lvBytes[0], Length(lvBytes));
  
      lvStream.SaveToFile(pvFile);
    finally
      lvStream.Free;
  