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

Delphi WideString和Delphi 2009

发布时间:2020-12-15 04:28:02 所属栏目:大数据 来源:网络整理
导读:我正在编写一个类,将宽字符串保存到二进制文件.我正在使用Delphi 2005,但该应用程序将被移植到Delphi 2010.我在这里感到非常不确定,有人可以确认: Delphi 2005 WideString与Delphi 2010 String完全相同 Delphi 2005 WideString char以及Delphi 2010 String
我正在编写一个类,将宽字符串保存到二进制文件.我正在使用Delphi 2005,但该应用程序将被移植到Delphi 2010.我在这里感到非常不确定,有人可以确认:

> Delphi 2005 WideString与Delphi 2010 String完全相同
> Delphi 2005 WideString char以及Delphi 2010 String char保证始终为2个字节大小.

使用所有的Unicode格式,我不想被我的字符串中的一个字符串突然3字节宽或类似的东西.

编辑:找到这个:“我确实说UnicodeString,而不是WideString,WideString仍然存在,并且不变,WideString由Windows内存管理器分配,应该用于与COM对象交互,WideString直接映射到COM中的BSTR类型“.在http://www.micro-isv.asia/2008/08/get-ready-for-delphi-2009-and-unicode/

现在我更困惑了所以Delphi 2010的WideString与Delphi 2005 WideString不一样?应该使用UnicodeString吗?

编辑2:Delphi 2005中没有UnicodeString类型.

解决方法

对于您的第一个问题:WideString与D2010的字符串不完全相同. WideString是一直以来一样的COM BSTR类型.它由Windows管理,没有引用计数,所以每当你在某个地方通过它时,它会复制整个BSTR.

UnicodeString,它是D2009及其中的默认字符串类型,基本上是我们都知道和喜欢的AnsiString的UTF-16版本.它有一个引用计数,由Delphi编译器管理.

对于第二个,默认的char类型现在是WideChar,它们是与WideString一直使用的相同的字符.它是一个UTF-16编码,每个字符2个字节.如果将WideString数据保存到文件中,可以将其加载到UnicodeString中,而不会有麻烦.两种类型之间的区别与内存管理有关,而不是数据格式.

(编辑:李大同)

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

    推荐文章
      热点阅读