In D2009 +, it TStringStreamexpects UnicodeString, not AnsiString. If you just want to write the contents of AnsiStringas-is without having to convert the data to Unicode and then back to Ansi, use TMemoryStreaminstead:
function AnsiStringToStream(const AString: AnsiString): TStream;
begin
Result := TMemoryStream.Create;
Result.Write(PAnsiChar(AString)^, Length(AString));
Result.Position := 0;
end;
AnsiString D2009 +, , , Ansi . 8- , UTF8String, , RawByteString AnsiString:
function AnsiStringToStream(const AString: RawByteString): TStream;
begin
Result := TMemoryStream.Create;
Result.Write(PAnsiChar(AString)^, Length(AString));
Result.Position := 0;
end;