【发布时间】:2010-11-23 23:47:28
【问题描述】:
我有这个方法,
var
s : TStringList;
fVar : string;
begin
s := TStringList.Create;
fVar := ZCompressStr('text');
ShowMessage( IntToStr(length(fVar) * SizeOf(Char)) );
//24
s.text := fVar;
ShowMessage( IntToStr( length(s.text) * SizeOf(Char)) );
//18
end;
ZCompressStr 来自http://www.base2ti.com/zlib.htm,第 121 行从 {$ifndef UNICODE} 到 {$ifdef UNICODE} 让它编译。
无论如何,如果我使用 fVar 变量,我可以调用 ZDecompressStr,但是一旦我将它移动到字符串列表或备忘录,它似乎会丢失这 6 个字节的数据......如果我尝试在 s 上使用 ZDecompressStr .text var 它因缓冲区错误而失败。
【问题讨论】:
-
你为什么使用 TStringList?
-
如果您描述了您想要完成的任务,您将更有可能获得有助于您实现目标的答案。例如, tstringlist 可能不是最好的工具(例如,字符串数组可能更好),当然分配给 tstringlist.text 可能会引起您的一些困惑(tstringlist.add 方法可能是您想要的)。不过,从您的问题中很难判断。
-
我使用 TStringList 的原因是因为我想在压缩数据后将其保存到文件中——为此我通常一直使用 TStringList。看来这是一个不,我一直侥幸逃脱但 D2009 让我失望了。
标签: delphi string unicode delphi-2009 char