test.dll:function test(x:double; out errcode:string):double;stdcall;
begin
  if x=0 then
     errcode:='error'
     else
  result:=1/x ;
end;调用时:function test(x:double;s:string):double;stdacall;external 'e:\tes.dll';procedure TForm1.Button1Click(Sender: TObject);
var x:double;
    s:string;
begin
    x:=strtofloat(edit1.text);
    showmessage(floattostr(f(x,s)));
end; 调试时出现错误,请问如何实现

解决方案 »

  1.   

    编译没有问题,但是运行时,form1不出现
      

  2.   

    dll中忘记加 exports了但是修改后,当调用showmessage(floattostr(f(0,s)));出现错误
      

  3.   

    其实做dll的目的主要是保护自己的算法该算法对输入的参数有范围限制,超过其范围,输出错误:"ERROR"输入正常范围内的数据,返回函数值
      

  4.   

    出什么错?在动态库中显示窗体,需要注意的事项比较多,TApplication、TScreen对象和EXE中的不共享。
      

  5.   

    dll中没有窗体的,假设dll中只有有一个函数: f(x)=1/x;  -10<=x<=10,dll被调用时,x输入随意,但不在范围内,或者x=0,提示错误
      

  6.   

    看你出现什么错了  如果是调用Dll错误 那就在外面捕捉
    如果是你Dll中函数的错误   增加一个 Var 引用类型的参数  在Dll的那个函数中  try  得到错误 赋给那个参数就OK了