|
盒子资源分类 |
|
|
|
|
DELPHI2007中一个DBEXPRESS中文兼容性问题的修改补丁 |
|
关键字:DELPHI2007 DBEXPRESS 中文兼容性 WideString |
来 自:原创 |
平 台:Win2k/XP/NT,Win2003 |
下载所需:0 火柴 |
深浅度:初级 |
完成时间:2008/2/27 |
发布者:mstarsoft |
发布时间:2008/3/2 |
编辑器:D2007 |
语 种:简体中文 |
分 类:组件 |
下载浏览:0/9551 |
|
|
|
|
文章抄自我的DELPHIBBS帖子,再次感谢小沈的帮忙.
运行环境是 D2007 + DBX4 (在D2006及以前版本里面 应该没有这个问题),问题很简单 自己写一个简单的项目 连接一个 MS SQL 2000 数据库 放上控件 TSQLConnection 和 TSQLQuery,首先在IDE环境里面给 TSQLQuery 的SQL 设置指令,这个指定包含有中文(无论是中文字段还是结果都可以)并且带有2个以上的参数 ,然后你去运行他,结果是OK的正常的.
问题是隐藏得比较深的哦,你尝试在命令(如响应某个BUTTON)里面用代码给 SQL 赋值,代码可以是跟前面一模一样的,然后去OPEN这个集合,问题出现了,会有提示 ---------- Project1 ---------- 至少一个参数没有被指定值。 ---------- 确定 ----------
有趣的是,如果你在代码里面给SQL设置的指令并没有包含中文的话,就不会有任何问题了.
问题的根本原因是DELPHI在移植支持UNICODE过程中 代码存在BUG 解决方案是自己修改相关的控件代码 控件代码的路径是 D:\Program Files\CodeGear\RAD Studio\5.0\source\database\src\pas\dbx\vcl (安装的路径不同前面会不同)
打开文件 SqlExpr.pas 下面这个函数是做参数分配的
定位到FixParams函数, 修改下列参数的定义: Param, Start: string; 改成: Param, Start: WideString; 然后保存.
然后在你的工程项目里面 直接加入这个文件 重新编译 就可以解决这个问题了. |
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们! |
相关文章 |
|
|
|
相关评论 |
|
共有评论11条
当前显示最后6条评论
|
mstarsoft |
2008/3/4 18:34:14 |
即使是最新的补丁也有这个问题的 我就感觉很奇怪 D2007出这么久了 这么都没有搜索到 有别人反馈这个问题 原贴是 http://www.delphibbs.com/delphibbs/dispq.asp?lid=3873824 |
leonliu911 |
2008/3/4 20:00:09 |
仔细的看了重现过程,发现的确有这个问题,它在UP4上依然存在。
修改后编译生成的SqlExpr.dcu是169k,原版自带的是175k,不知道是怎么回事。
感谢楼主分享! |
freetop |
2008/3/5 23:32:39 |
好人一个。谢谢! |
richit |
2008/3/6 0:00:34 |
请问如何重新编译SQLexpr.pas啊 |
forjoylee |
2008/3/15 21:30:15 |
把SQLexpr加载你的工程中就可以了 |
chenmfly |
2008/6/20 17:10:38 |
还是搞不定.... 麻烦发一个子详细的给我,,,chenmfly@126.com |
我要发表评论 |
查看全部评论 |
|
|
|