想在dll中处理 其他程序dbgrideh中的数据,出现问题。然而处理rz系列控件并没有问题。

解决方案 »

  1.   

    dll是独立的内存区域,它不能读取DBGridEh的值。只能通过参数,传入相关数据。
    Rz控件,是VCL控件,它可以共享内在的,因而可以读取DBGridEh的值。
      

  2.   

    DBGridEh不也是VCL控件吗,这个问题我之前也遇到过,一直没有找到解决办法,上面的兄弟没看清楚楼主所说的意思,他是说在跨进程读取其他程序数据里面,同一个程序里面的RZ系列不报错,DBGrideh表格就异常
      

  3.   

    dll是独立的内存区域,它不能共享主程序中的内存,因而它:
    (1)不能读取主程序中的DBGridEh的值。只能通过参数,传入相关数据。
    (2)Dll如果自带Form和DBGridEh,DBGridEh需要自带连接控件,读取数据集。
    (3)楼主的Rz控件,应该是主程序中的VCL控件,它可以读取DBGridEh的值。 
      

  4.   

    DBGridEh不也是VCL控件吗,这个问题我之前也遇到过,一直没有找到解决办法,上面的兄弟没看清楚楼主所说的意思,他是说在跨进程读取其他程序数据里面,同一个程序里面的RZ系列不报错,DBGrideh表格就异常
    嗯就是的,我把use里的dbgrideh注释掉,一切正常。
    加上以后一执行,目标程序就崩溃。我单独又做了个dll做实验,里面use了dbgrideh,并且里面只创建了一个dbgrideh对象却一切正常。。
      

  5.   

    1.控件版本是否一致
    2.调用过程上下加上这个试试。
    CoInitialize(nil);
    CoUninitialize;
      

  6.   

    我的目标程序用的dbgrideh版本我并不知道啊,另外activex初始化的代码加上了貌似也不管用
      

  7.   

    Dll 是独立内存,不要使用DBGridEh,要使用参数传入数据集的方式才可以。
      

  8.   

    取得其他程序dbgrideh的数据现在我这里参考网上操作dbgrid的思路一共总结了有两种方法,一种wh_callwndproc钩子函数里转换twincontrol成控件类型对象,出错。另一种是在wm_getmessage的处理函数里面转换twincontrol但是操作dataset已经成功。接下来实验一下能不能串换使用。
      

  9.   

    然而这并不是关键点,关键问题在于,第二种方法里面连引用dbgrideh都报错,光是引用就报错。而第一种就没有这个问题,感觉这个涉及到了玄学问题。
      

  10.   

    然而这并不是关键点,关键问题在于,第二种方法里面连引用dbgrideh都报错,光是引用就报错。而第一种就没有这个问题,感觉这个涉及到了玄学问题。
    是很奇怪的问题,之前我也在这个问题上伤了不少脑筋,最后不管不问了,等待楼主的研究结果
      

  11.   

    然而这并不是关键点,关键问题在于,第二种方法里面连引用dbgrideh都报错,光是引用就报错。而第一种就没有这个问题,感觉这个涉及到了玄学问题。
    是很奇怪的问题,之前我也在这个问题上伤了不少脑筋,最后不管不问了,等待楼主的研究结果

    重写一遍也许就好了。。
      

  12.   

    然而这并不是关键点,关键问题在于,第二种方法里面连引用dbgrideh都报错,光是引用就报错。而第一种就没有这个问题,感觉这个涉及到了玄学问题。
    是很奇怪的问题,之前我也在这个问题上伤了不少脑筋,最后不管不问了,等待楼主的研究结果

    重写一遍也许就好了。。
    或者DLL改个名字。。