zoukankan      html  css  js  c++  java
  • 升级到10.4.2遇到一个怪问题

    有个OpenRecordItem方法,代码如下:

    procedure TCRecordInfo.OpenRecordItem;
    var
      sqlstr: string;
    begin
      sqlstr := 'Select * from cr_recorditem where FID=' + qrecord.FieldByName('FID').AsString.QuotedString;
    
      qRecordItem.Close;
      qRecordItem.Query.Text := sqlstr;
      qRecordItem.Open;
    end;

    只是打开一个数据集,要是执行这个方法,就会产生一个地址错误,注释掉,则没有。

    跟踪代码,是因为执行TComponent._Release产生的问题,是哪一个对象呢?

    function TComponent._Release: Integer;
    begin
      if FVCLComObject = nil then
        Result := -1   // -1 indicates no reference counting is taking place
      else
        Result := IVCLComObject(FVCLComObject)._Release;//出错
    end;

     2021-3-10:在QDAC作者王大侠的帮助下,终于搞定这个问题,原来,我自画的工具条造成的。就是说,按下一个控件,然后逻辑写在了MouseUp事件中,在这个事件中,我释放了这个对象,在接下来的代码中,又访问了这个对象,造成访问地址错误。问题就是这个原因,接下来,大侠帮我改变原来的实现,不再删除这个对象,如果不需要这个对象,则不显示这个对象,将其隐藏起来,所以因为这个问题产生的各种奇怪现象都解决了!

  • 相关阅读:
    Erlang学习笔记2
    erlang的Socket参数含义
    Erlang 日期和时间处理、时间戳转换
    图(有向)-拓扑排序
    图(无向连通无权图)-广度优先搜索
    图(无向连通无权图)-深度优先搜索
    图(无向连通无权值图)深度优先生成最小生成树
    客户关系管理系统
    字符串类
    I/O流
  • 原文地址:https://www.cnblogs.com/kinglandsoft/p/14464759.html
Copyright © 2011-2022 走看看