AnsiString To Stream

I created the following code:

Function AnsiStringToStream(Const AString: AnsiString): TStream;
Begin
  Result := TStringStream.Create(AString, TEncoding.ANSI);
End;

But I "W1057 Implicit string, other than" AnsiString "to" string ""

Is something wrong with him?

Thank.

+3
source share
2 answers

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; 
+4

TStringStream string. a AnsiString, , , TEncoding.ANSI, .

:

Function AnsiStringToStream(Const AString: AnsiString): TStream;
Begin
  Result := TStringStream.Create(string(AString));
End;

, , .

+7

All Articles