使用 Delphi XE2 将 TMemoryStream(包含 unicode 字符串)复制到另一个 TMemoryStream 时,我遇到了一个奇怪的行为:
我有两个 TMemoryStream 实例。第一个实例包含 unicode 文本 (SourceMS)。我将一些任意数据写入第二个 MemoryStream (DestMS),然后将第一个流的内容复制到第二个流,如下所示:
var
SomeInt: Integer;
SomeByte: Byte;
SourceMS, DestMS: TMemoryStream;
begin
...
DestMS.Write(SomeInt, SizeOf(SomeInt));
DestMS.Write(SomeByte, SizeOf(SomeByte));
SourceMS.SaveToFile('c:\SourceMS.txt'); // SourceMS.txt contains the unicode chars
DestMS.CopyFrom(SourceMS, 0); // copy the whole content of SourceMS to DestMS
DestMS.SaveToFile('c:\DestMS.txt'); // DestMS.txt DOEST NOT contain unicode chars
end;
如何在不丢失 unicode 的情况下将第一个流的内容复制到第二个流(具有隐式转换)?当我说“丢失 unicode”时,我的意思是:unicode 字符串确实被复制到第二个流中,但是 unicode 丢失了。我只得到 ANSI 字符。