我在DELPHI中是这样写的
Type TArrayData=array[1..8,1..3] of single;
function test(data:TArrayData):integer;stdcall;
beginresult:=-1;
end;exports
test index 1;
begin
end.在VB中应该怎么定义这个二维数组TArrayData呢?

解决方案 »

  1.   

    直接传个指针进来算了,你自己知道是个二维数组就行了!
    function test(data: PChar; m{行}, n{列}: Integer):integer;stdcall;
    var
      i, j: integer;
    begin
      for i:=0 to m-1 do
      begin
        for j:=0 to n-1 do
        begin
          write(data[i*n+j]);
          write(' ');//空格
        end;
        writeln;//空行
      end;
    end;
      

  2.   

    program Project1;{$APPTYPE CONSOLE}uses
      SysUtils;procedure test(data: PChar; m{行}, n{列}: Integer);
    var
      i, j: integer;
    begin
      for i:=0 to m-1 do
      begin
        for j:=0 to n-1 do
        begin
          write(data[i*n+j]);
          write(' ');//空格
        end;
        writeln;//空行
      end;
    end;var
      buf: array[0..9, 0..9] of char;
    begin
      { TODO -oUser -cConsole Main : Insert code here }
      FillChar(buf, 100, 65);
      test(@buf, 10, 10);
      readln;
    end.
      

  3.   

    Dim data(1 To 8, 1 To 3) As Single试试看
      

  4.   

    VB中好像没有指针吧,我用Delphi调试没问题的,但不知道VB里是不是可以
      

  5.   

    现在问题就出在二维数组作为参数,在VB与Delphi的Dll间传递问题
      

  6.   

    declare function test(byref data as any) as long这样定义,调用就这样调用
    test data(1,1)
    应该没问题
      

  7.   

    Eastunfail:
    在Dll里的Data是不是用指针类型?
      

  8.   

    DLL中建议使用
    function test(const data:TArrayData):integer;stdcall;
    或者
    function test(var data:TArrayData):integer;stdcall;
    这样来确保传给函数的是指针。而且在vb中的定义是传递引用,也是指针,这样就能保证数据的正确性了