function getarr(p: pointer, size: integer):boolean;
var tmpP:array of double;
    d:double;
    i:integer;
begin
  tmpP := p;
end;

解决方案 »

  1.   

    就象普通类型参数一样声明就是了,只是在函数参数声明中,只支持一维动态数组(也可用作开放类型参数)的直接声明,其它静态数组或多维动态数组需要单独声明为一种类型后再作为参数类型声明;函数返回值也是一样。下面是二维动态数组的操作实例:Type
    TArr=array of array of string;Function DoArray(const c:Tarr):Tarr;
    var
    i,j:Integer;
      d:Tarr;
    Begin
    SetLength(d,high(c)+1,high(c[0])+1);
      for i:=Low(c) to high(c) do
       for j:=Low(c[0]) to high(c[0]) do
         Begin
       showmessage(c[i,j]);
            d[i,j]:='Copy'+c[i,j];
          end;  Result:=d;
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
    a,b:Tarr;
      i,j:Integer;
    begin
    Setlength(a,3,3);  for i:=Low(a) to high(a) do
       for j:=Low(a[0]) to high(a[0]) do
       a[i,j]:=inttostr(i)+','+inttostr(j);
      b:=doArray(a);  for i:=Low(b) to high(b) do
       for j:=Low(b[0]) to high(b[0]) do
       showmessage(b[i,j]);end;
      

  2.   

    使用指针的方法,不过只适于过态数组:
    Type
    DynArr=array of array of String;Function DoArray(A:PString):PString;
    var
    i,j:Integer;
    Begin
    For i:=Low(DynArr(A)) to High(DynArr(A)) Do
    For j:=Low(DynArr(A)[0]) to High(DynArr(A)[0]) Do
    DynArr(A)[i,j]:=Inttostr(i)+','+Inttostr(j)+':INFUN';
      Result:=A;
    End;procedure TForm1.FormCreate(Sender: TObject);
    var
      A:DynArr;
      i,j:Integer;
    begin
    SetLength(A,3,3); For i:=Low(A) to High(A) Do
         For j:=Low(A[0]) to High(A[0]) Do
    DynArr(A)[i,j]:=Inttostr(i)+','+Inttostr(j);  A:=DynArr(DoArray(PString(A))); For i:=Low(A) to High(A) Do
         For j:=Low(A[0]) to High(A[0]) Do
       ShowMessage(A[i,j]);
    end;