本人菜鸟 求高手指点
最近做本科毕业设计,用delphi编写一个计算程序,程序中我调用了refprop.dll用来计算甲烷的热物性。计算时没有问题,但是做参数优化时,使用的是老师给的一个遗传算法的单元,无奈就是报错Access violation......write of address.....
这是报错的点optimi_value:=ammonia_water_cycle(Pturbine,Tturbine,xammonia);
单步运行,函数ammonia_water_cycle(Pturbine,Tturbine,xammonia)中已算出返回值,跳出函数再往下就报错了。快被折腾疯了,毕设还几天就要交了,求各位大神们帮帮忙吧!!

解决方案 »

  1.   

    optimi_value:=ammonia_water_cycle(Pturbine,Tturbine,xammonia);
    仔细检查这里的参数,用assert确认一下是否符合预期。
      

  2.   

     if optimi_value<0 then
       begin
       result:=false;
       end else
       begin
      
       result:=true;
       end;
    这是老师给的单元的程序代码,关于遗传算法的,对老师的计算程序的参数优化没有问题,而只是套入我的计算程序函数后出现该错误,我后来将有关调用refprop.dll的代码注释掉后可以套入该单元进行优化,是我调用时出错了吗?可是为什么单只是计算却不报错?对了,当上述代码中optimi_value=0时却可以继续往下运行
      

  3.   

    弱弱的问一句,什么是用assert确认一下本人本科学的能源动力,实在之前没怎么接触过编程。
      

  4.   

    optimi_value ? 查查这个是否可访问的。我曾经做个几个FORM类并继承下去,其中代码很简单,在第二层的FORM类protected 声明 param ,并定义一过程代码 param=value,一直运行是没有问题的,后来我把最底层的Tformbase=class(Tfrom) 更改为Tfrombase=class(Tmyform)后,就出错,单步时,窗体创建是PARAM可见并可以访问,一创建完后,PARAM不可以访问。