说说Delphi2009对备注型字段的处理方式(解决大家备注字段截断的问题)

delphai 2009-02-16 08:22:02
很多人在用D2009的时候,反应备注字段内容被截断,用纯英文和阿拉伯数字不会,中文和其他语言的混合输入会出现截断内容,但没有乱码。普遍反应是Delphi2009的unicode bug,其实并不是这样。盒子很多用户也反应如此。
我在这个版本测试至少没有所说说的问题(RAD Studio 12.0.3300.19037)

我只用到ADO系列的数据控件,BDE,DBExpress是怎么样就不清楚了。

说说Delphi2009和D2007版本处理。
Delphi2007把备注字段映射的类型为TMemoField,BLOB类型为ftMemo
Delphi2009把备注字段映射的类型为TWideMemoField,BLOB类型为ftWideMemo
(其实Delphi2007也有这个类型字段,只是IDE自动映射不是它而已)

这个时候,如果直接升级老的Delphi2007工程代码到D2009下,备注字段会在保存双字节文字的时候出现不规则的内容截断。
这个时候,你需要删除原来的备注字段设计,从新用IDE映射为TWideMemoField字段,然后就没有问题了。

如果你的工程里面没有用代码对备注字段内容进行特别处理,完全可以用文本编辑器(如UltraEdit之类)的直接对
代码文件(pas)和窗体文件进行类型替换,然后Delphi2009直接打开就全部为D2009默认的备注字段类型了(TWideMemoField)

1.把所有的工程代码和窗体文件(pas,dfm)里面的(TMemoField)替换为(TWideMemoField)
2.把所有窗体文件(dfm)的ftMemo的字符替换为ftWideMemo(也就是修改字段的BLOB属性)

然后用D2009打开编译就没有问题了。
相信这个不是d2009的unicode bug,而是迈向unicode的必要的修改。
其实d2006开始的ado系列的数据控件都已经考虑到unicode准备了,很多属性都有unicode配套的增加了,d2009只是水到渠成而已。

希望大家把在迁移到d2009中遇到的问题多贴出来互相交流,大家都清楚了,也许很多bug就不是bug了。
...全文
245 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
支持中文哦 2009-02-18
  • 打赏
  • 举报
回复
学习,分给我。
IDtoID 2009-02-16
  • 打赏
  • 举报
回复
学习

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧