请问:错误提示‘Access Violation at address 00403B5E in Module 'menu.exe',read of address 42423EBE’
1、一般是由什么原因引起的?能否提示一下或者举些例子?
2、如果实在改不了,用什么方法可以使这个错误提示不显示出来?

解决方案 »

  1.   

    1、这一般是由于你非法访问了内存而引起了,例如:
      var
        edit1 :  TEdit;
      begin
        edit1.create(self);//正确的写法应该是:edit1 := TEdit.create(self);
        {edit1对象的实例还没有创建,你就引用了它,就会出如上的错误}
      end;
    2、这种错误是致命的,是不可能跳过这个错的,还是检查一下你自己的代码吧
      

  2.   

    procedure sndfax(sndstream:tmemorystream;);
      ...
    begin
       ...
       sndstream.position:=0;
       sndstream.write(cc,1);
       ...
    end;
    是否是sndstream没有建立我就使用?但很奇怪我没有建立它怎么让我用,而且不在执行sndstream.position:=0时出错,而是在执行完sndfax后不知道硼到哪里就出错了?
      

  3.   

    传参数的时候是需要创建tmemorystream实体的。
    在你给的这里是不用的
    如:
      aMemStream := TMemoryStream.Create;
      try
        sndfax(aMemStream);
      finally
        aMemStream.Free;
      end;
      

  4.   

    有没有可能是某些变量定义错误所致?例如:本应是byte类型的而错误地定义为char类型等等!