当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: Delphi7中存储unicode的BUG
 

 

    摘要:下是delphi数据库应用程序中常见错误、原因/解决方法: 数据感知控件datasource属性未设置或者设置错误(链接为其他的datasource)原因:在设计时不小心改动,拷贝粘贴过程中未全部更改 测试时标准代码中没有数据,无法进行测试解决:确定需要输入数据的表格的先后顺序,在依次输入测试数据,再进行测试 wwfilterdialog中进行数据过滤时,应该显示字段列表的字段没有显示,不方便输入......
 ·获取 windows 特殊文件夹函数     »显示摘要«
    摘要:在网上找不到比较全的,干脆自己做,现贡献出来。unit utils;interfaceuses windows, sysutils, shlobj;type tspecialfolder = ( sfdesktop, // <desktop> sfinternet, // internet explorer (icon on desktop) sfprograms, // start ......


Delphi7中存储unicode的BUG?
delphi7中存储unicode的bug?

【程序编程相关:如何将几个DBGRID里的内容导入同一个

 

【推荐阅读:远程得到任意远程NT主机帐号List的源

【扩展信息:GetPartFilter+SumSto

近日,在用delphi7做unicode的程序时发现了这样一个问题,就是使用tadocommand组件执行sql语句时,如果sql语句中有unicode字符,存储在数据库里会出现乱码,使用ttntadoquery也是一样(使用参数方式不会出现乱码,这里只讨论纯sql的方式).但是tadocommand本身是支持widestring的呀,commandtext属性也是widestring类型的,为什么会出现这个问题呢?我试着改变tadocommand的几个属性值,发现了一个怪现象,只要把paramcheck属性置为false就可以正常的存储unicode字符,而置为true时就出现乱码.为什么会出现这种情况?这个属性看起来与unicode本身没有任何关系,究竟是什么原因导致了乱码的发生呢?我通过研究tadocommand所在的adodb.pas文件,发现了问题的所在,我们看一下bug所在的过程:

procedure tadocommand.assigncommandtext(const value: widestring; loading: boolean);

 

  procedure initparameters;

  var

    i: integer;

    list: tparameters;

    nativecommand: string;

  begin

    list := tparameters.create(self, tparameter);

    try

      nativecommand := list.parsesql(value, true);

      { preserve existing values }

      list.assignvalues(parameters);

      commandobject.commandtext := nativecommand;

      if not loading and (assigned(connection) or (connectionstring <> )) then

      begin


...   下一页
    摘要:设计模式在制作升级文件包中的应用 钱波 钱晓贤 高春玲 引言 软件系统的复杂性越来越大,而现有的类库也已经不能满足工程的需要,软件开发小组得到的建议是除了软件本身的特性突出,快速投放市场,成本低以外,还有性能和安全,并且软件能够做到改动容易,能及时交付,升级快速。软件构架的确会成为首要目标,但是架构可能很难说清楚是怎么回事,因为事实并......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE