我需要对TTreeView的树的Unicode字符串执行某些操作,因此我想将此字符串加载到内存流中,然后将内存流加载到树视图中。我怎么能这样做?
答案 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
。
使用TMemoryStream
和sizeof(Char)
,此代码也适用于以前的非Unicode版本的Delphi。