delphi clientdataset过滤奇怪的行为

时间:2014-01-02 18:54:40

标签: delphi filter filtering client-dataset

在XE5 Delphi中工作。对于给定的ClientDataSet,此过滤器正在运行: Strap LIKE '18%'

但是这个没有: Strap LIKE'1%'。同时 Strap LIKE'%8'工作正常,但 Strap LIKE'%18'则不行。 Strap字段有一个字符串类型,总是有17个字符(从不为空)。

每次错误是(windows)“c0000005访问冲突”,但这是无意义的,但 Strap LIKE'%18%' Strap LIKE'%1%' Strap LIKE'%8%' ALL工作正常。定义数据存在,程序可以访问它们。当错误出现时,堆栈保留在 midas.dll 上,但这已注册,并且可以与其他过滤模式一起使用。

数据集中所有字段的行为相同。过滤模式为'x%''%xx'不起作用(其中x为一个字符),所有其他模式都有效。

发生了什么事?

2 个答案:

答案 0 :(得分:1)

如果在安装Delphi XE5期间你选择安装旧的和丑陋的BDE,它会在系统目录下安装一个旧的midas.dll库(日期8/9/2002)(检查Windows \ system32或Windows \ SysWOW64取决于32位或64位Windows)

您必须替换(或更好地删除)这个旧的midas.dll并使用Delphi附带的正确版本。您可以在Program files(x86)\ embarcadero \ rad studio \ 12.0 \ redist \ win32目录中找到它。

答案 1 :(得分:0)

midas.dll是一个自注册的dll,所以它是在第一次使用时注册的,无论你是否包含或复制到你的应用程序的同一目录,你必须从你的系统中替换每个旧的midas.dll或检查Windows注册表中注册的位置