大家好,我用delphi做了一个读取excel然后返回数组的dll,现在我在返回值上有疑问在dll里:我先在type里定义arr2:=array of string;一个string类型的数组,然后我开始写主要的方法,如下:function readxls(diradd:string):arr2;stdcall;经过一系列的读取操作,得到一个数组arr1,然后我用循环的方式将数组arr1赋值到result里面作为返回,代码如下:
for i:=1 to xx do
  result[i-1]:=arr1[i];这样写完编译是通过的,生成了dll文件,然后我在其他地方调用,代码如下:首先我在代码里定义了一个arr2如下:arr2:=array of string;然后在一个事件里调用方法,如下:arr2:=readxls('xxxxxxxxxx')编译未通过,说是类型不一样,一个string一个是array,为什么返回值变成了string呢?谢谢各位大侠了。

解决方案 »

  1.   

    楼主,DLL传入传出值用Pchar试试
      

  2.   

    怎样给result赋值?如何定义pchar?
      

  3.   

    DELPHI写动态库,传递的参数和返回值不要用string类型,一身律使用PChar类型。或其他类型代码。
      

  4.   

    那数组怎么放在pchar类型中返回?又如何接收呢?谢谢!
      

  5.   

    定义:
    Buff: array of char;function readxls(diradd:PChar):PChar;stdcall;PChar实际上是一个指针类型,array of char就是PChar。你可以看一下定义就知道了。