最近在调试DataSnap的程序,突然发现TClientDataSet打不开了,报错为dsnap200.bpl的非法地址访问,如下图:
很是怪异,干脆新建工程,只有TSQLConnection、TSQLQuery、TDataSetProvider和TClientDataSet,如下图:
开ClientDataSet1的时候还是报上面的错误,运行期也报非法地址访问错误。开始还以为系统遭了,于是把6月份重整系统的C盘重新恢复了,但问题依旧,有点蒙了。后来在工程文件中加入Midaslib,将DataSnap加入到程序中运行,却正常了。猛然间反应过来,应该还是midas.dll的问题。一查C盘的midas.dll文件,还真不少,如下图:
由于安装的是64位Win7,发现SysWOW64下有个midas.dll文件,重新将安装路径下bin目录中32位版midas.dll进行注册:
regsvr32 C:\Program Files (x86)\Embarcadero\Studio\14.0\bin\midas.dll
之后一切OK。
估计问题是不知什么时候将64位版的midas.dll注册了,导致IDE开ClientDataSet时调用了64位版,而IDE环境本身仍然还是32位的,所以报错。