Delphi 2009 Unicode字符大小

前端之家收集整理的这篇文章主要介绍了Delphi 2009 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,无论长度,因为它本质上是一个带有一些编译器魔法的指针.)

猜你在找的Delphi相关文章