zoukankan      html  css  js  c++  java
  • EhLib 4.1 在 Delphi 2007 下无法过滤和排序的问题 大 | 中 | 小

      在Delphi2007下安装了最新的EhLib v4.2.6,发现 DBGridEh 无法进行排序和过滤,执行操作时无反应。后来发现,如果选择本地过滤和排序的话,一切都会正常;如果是服务器端排序和过滤,则无法正常执行,错误信息为类型转换错误。

    跟踪EhLib代码发现,是DBUtilsEh.pas文件中的SetDataSetSQLLikeProp 和IsDataSetHaveSQLLikeProp 函数中的以下相关代码报错:


    具体的类型转换错误是指TObject与TStrings转换错误,所以报错。
    我用的是ADOQuery,其SQL属性在Delphi7下是TStrings类型,在Delphi2007下是TWideStrings,由TObject转换为TStrings按理说不应该转换不成功啊。

    继续查看代码才发现:
    TWideStrings没有继承自TStrings,而是继承自TPersistent,理论上跟TStrings没有关系,将他转换为TStrings,当然会报错了。

    找到原因后,将EhLib相关出错函数的代码改为以下:


    修改后,重新编译,一切正常。

    附:如果在Delphi2007中安装EhLib4.X时报错,那么注释掉EhLibVCL.pas文件中的“TBytes = array of Byte”行即可正常安装了(因为在Delphi2007中CodeGear自己定义了TBytes类型)。

    谢祥选【小宇飞刀(xieyunc)】
  • 相关阅读:
    转载:混淆包含SlidingMenu、gson等Android代码的proguard写法
    今天解决的两个问题
    C++中指针和引用的区别
    负载均衡服务器session共享的解决方案 (转载)
    Entity Framework的默认值BUG解决方法
    【转】SAPI中的IspeechRecoContext(接口)
    Sapi 添加语法的文章(转载)
    SAPI训练文件存储位置
    Flask第九篇 Flask 中的蓝图(BluePrint)
    Flask 第八篇 实例化Flask的参数 及 对app的配置
  • 原文地址:https://www.cnblogs.com/xieyunc/p/9126613.html
Copyright © 2011-2022 走看看