加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi 2009 Unicode字符大小

发布时间:2020-12-15 04:32:19 所属栏目:大数据 来源:网络整理
导读:我刚刚获得Delphi 2009并且之前已经阅读了一些关于由于切换到Unicode字符串而可能需要的修改的文章. 大多数情况下,提到sizeof(char)不再保证为1. 但是为什么这对于字符串操作会有趣呢? 例如,如果我使用AnsiString:=’Test’并对String(现在是unicode)执行
我刚刚获得Delphi 2009并且之前已经阅读了一些关于由于切换到Unicode字符串而可能需要的修改的文章.
大多数情况下,提到sizeof(char)不再保证为1.
但是为什么这对于字符串操作会有趣呢?

例如,如果我使用AnsiString:=’Test’并对String(现在是unicode)执行相同操作,那么我得到Length()= 4,这对于两种情况都是正确的.
没有测试它,我确信所有其他字符串操作函数的行为方式相同,并在内部决定参数是unicode字符串还是其他任何东西.

如果我进行字符串操作,为什么我会对char的实际大小感兴趣呢?
(当然,如果我使用字符串作为字符串而不存储任何其他数据)

谢谢你的帮助!
霍尔格

解决方法

使用Unicode SizeOf(SomeChar)<>长度(SomeChar).基本上,字符串的长度小于其字符大小的总和.只要你不假设SizeOf(Char)= 1,或者SizeOf(SomeString [x])= 1(因为两者都是FALSE)或尝试用字符交换字节,那么你应该没有任何麻烦.你正在做任何创意填充字符到Chars或Strings的地方,那么你需要使用AnsiString.

(SizeOf(SomeString)仍然是4,无论长度,因为它本质上是一个带有一些编译器魔法的指针.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读