小弟使用了一个Timer控件,发现在里面写一个read事件就出现错误,错误提示是:Access Violation at address 00456535 in module 有什么解决方案吗,各位大虾帮帮忙啊

解决方案 »

  1.   

    应该和用木用timer木有关系吧
      

  2.   

    和TIMER没关系, 一般是用了没有初始化的内存块, 或是没有创建实例的类.
      

  3.   

    用iocomp吧
    www.ccrun.com有下载
      

  4.   

    通讯应该是没问题的,单独拿出来读是可以的,代码如下,各位大虾帮忙看看,小弟刚刚接触工控,基本都是自己摸索的,还有很多不懂的地方
    procedure TForm1.Read(Sender: TObject);
    begin
      testItem1.Read(OPCDeVice,myvalue1,myquality,mytimestamp); //问题
      testItem6.Read(OPCDeVice,myvalue6,myquality,mytimestamp);
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      Read(Sender);
      Edit3.Text:=myvalue1;
      case myvalue6 of
        0:Edit2.Text:='设备无故障,可正常运行';
        1:Edit2.Text:='左限故障,请检查';
        2:Edit2.Text:='右限故障,请检查';
        3:Edit2.Text:='设备过载,请检查';
      end;
    end;
      

  5.   

    如果是OPC,PLC提供的OPC服务器没提供通知吗?客户端只要连上就不要管了,自动更新,或者需要配置下?
      

  6.   

    我下载了iocomp控件,杂用啊。。
      

  7.   

    对,一般OPC服务器可以选择数据变化更新或者定时更新的,内部就是COM事件
      

  8.   

    各位大大辛苦了,小弟发现错误了,原来是Timer控件事件定义太短了,默认1000MS竟然不行,改成1500就成功了。。郁闷了结贴了。非常感谢各位