如何通过TMemoryStream将Unicode字符串加载到TTreeView中?

时间:2011-06-11 08:51:56

标签: string delphi treeview memorystream

我需要对TTreeView的树的Unicode字符串执行某些操作,因此我想将此字符串加载到内存流中,然后将内存流加载到树视图中。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您很想直接使用TStringStream的{​​{1}}类intead。但是这个TMemoryStream类会在存储之前将UnicodeString编码为AnsiString,在Unicode Delphi版本中......

所以这里有一些函数来创建一个具有纯Unicode内容的TStringStream实例,然后检索这个文本:

TMemoryStream

当您不再需要function StringToMemoryStream(const Text: string): TMemoryStream; var Bytes: integer; begin if Text='' then result := nil else begin result := TMemoryStream.Create; Bytes := length(Text)*sizeof(Char); result.Size := Bytes; move(pointer(Text)^,result.Memory^,Bytes); end; end; function MemoryStreamToString(MS: TMemoryStream): string; begin if MS=nil then result := '' else SetString(result,PChar(MS.Memory),MS.Size div sizeof(Char)); end; 时,请务必Free

使用TMemoryStreamsizeof(Char),此代码也适用于以前的非Unicode版本的Delphi。