複製內存流(包含unicode字符串)時,我得到一個怪異的行爲到另一個內存流,採用Delphi XE2:寫入到內存流和丟失的Unicode
我有一個內存流的兩個實例。第一個實例包含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字符。
您的'MS1'和'MS2'變量在您的示例中正確排序嗎? – 2012-07-27 15:28:53
當你說'..我寫一些任意數據到第二個MemoryStream,然後將第一個流的內容複製到第二個流'你知道你可能正在替換['BOM'](http:// msdn .microsoft.com/en-us/library/windows/desktop/dd374101%28v = vs.85%29.aspx)的第二個流? – RRUZ 2012-07-27 15:31:06
@James:這只是一段代碼。當調用CopyFrom方法時,MS2已經填充了數據。 – Alexandre 2012-07-27 15:42:12