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类型)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值