一: 关于string;
xe7中string默认的是unicodestring,所以计算一些中英文的字符串长度会出现不同,
unicodestring中每个字符已2个字节存储,长度为2,即使是英文也会填充空格弥补.
ansistring中汉子长度为2,英文为1.
比如如下代码:
var
s: string;
i: integer;
begin
s:= edit1.Text;
//s:= '啊是的1a';{啊和是中间有空格}
label1.Caption:= s +'(sizeof)' + ':' + inttostr(sizeof(s));{4}
label2.Caption:= s +'(length)' + ':' + inttostr(length(s));{8}
end;
但如果现在是想得到他们长度为9怎么办?可以使用如下方法;
1: 引用AnsiStrings单元.

在Delphi XE7中,string默认为UnicodeString,导致中英文字符串长度计算变化。文章介绍了如何处理长度差异,包括引用AnsiStrings单元和转换为AnsiString,以及自定义GetLen函数来获取准确长度。此外,TImage控件现支持GIF和PNG,但JPEG仍需引用JPEG单元。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



