我有一个返回动态字节数组
的函数type
TMyEncrypt = Array of Byte;
TMyDecrypt = Array of Byte;
function decrypt(original: TMyEncrypt) : TMyDecrypt;
返回的动态数组TMyDecrypt的内容是带有CRLF的标准文本。
如何将此加载到带有CRLF作为分隔符的TStringList中,而不将其保存到临时文件中?
编辑:重新编译的字节数组包含unicode编码字符
答案 0 :(得分:2)
将字节数组解码为字符串,然后分配给字符串列表的Text
属性。
var
Bytes: TBytes;
StringList: TStringList;
....
StringList.Text := TEncoding.Unicode.GetString(Bytes);
请注意TBytes
的使用,TBytes
是用于保存动态字节数组的标准类型。出于兼容性原因,使用TEncoding
是有意义的。这样,您的数据可以由其他RTL和库代码处理。我们通过使用SetString
立即利用这一事实。
您可以使用var
Text: string;
Bytes: TBytes;
StringList: TStringList;
....
SetString(Text, PChar(Bytes), Length(Bytes) div SizeOf(Char)));
StringList.Text := Text;
,我的回答最初建议:
TEncoding
我个人更喜欢使用StringList.Text := PChar(Bytes);
,因为它非常明确地使用了编码。
如果您的文本以空值终止,那么您可以使用:
{{1}}
同样,我更喜欢明确编码。而且我可能对我的数据有点偏执,不知何故不会被终止。
您可能会发现UTF-8比UTF-16更有效。