如题,有两个文件,
文件UNIT1(主窗体单元文件)中声明了二维数组类型
type
TArrData = Array[0..2,0..3] of Word;
并定义全局变量: tArr:TArrData;
文件UNIT2中声明了类:
type
TProcess = Class(TObject)
    procedure get(tmp:二维数组类型);
    .....
end;UNIT1主窗体创建时候创建了UNIT2的对象oU2 := TProcess.Create;
然后在UNIT1中调用UNIT2的函数Get(tmp:二维数组类型)
oU2.Get(tArr);
但是UNIT2中的函数Get(...)的二维数组参数不知道怎么声明,像
type
TData = Array[0..2,0..3] of Word;
var
TDa
type
TProcess = Class(TObject)
    procedure get(tmp:TDa);
    .....
end;
或者
type
TData = Array[0..2,0..3] of Word;TProcess = Class(TObject)
    procedure get(tmp:TData);
    .....
end;
都不行,总是会报错!请问到底该怎么声明UNIT2中的二维数组参数?
谢谢!(以上IDE为DELPHI7)对了,还有个VC6的问题,我在VC里用C写了个DLL给DELPHI的界面调用,
DLL的接口函数是这样的: Go(int (*data)[3]);——假设是个2行3列的数组
然后DELPHI写的界面传进来个二维数组,到此声明什么的都没有问题,没有错误
就是VC里有问题,比如我在VC里的GO(...)函数中声明了数组变量aa:
int Go(int (*data)[3])
{
    int aa[2][3],i,j;    for(i=0;i<2;i++)
        for(j=0;j<3;j++)
            aa[i][j]=data[i][j];
}
就这样,DEBUG的时候,用QuickWatch监控数组变量aa和data,发现监控窗口里的aa是正常的,
出现a[0]和a[1],然后a[0]和a[1]下又各有[0]、[1]、[2],但是data出现的却是data[0],data[1],data[2],
然后对应的加号无法点开,我估计data[0],data[1],data[2]下是不是只出现了[0]和[1]?这是怎么回事呢?什么原因啊?
谢谢!!!

解决方案 »

  1.   

    哦对了,上面写的UNIT1中的二维数组tArr都已经赋值过了,忘了写了。这些都没有问题,就是不知道怎么声明UNIT2中函数的二维数组参数。
      

  2.   

    interface
    type
    TArrData = Array[0..2,0..3] of Word;type
    TProcess = Class(TObject)
      procedure get(tmp:TArrData);
    end;
    implementation
    procedure TProcess.get(tmp:TArrData);
    beginend;感觉你问问题的方式怪怪的,没怎么理解你的意思。get(tmp:TArrData);这样子是没问题的……
      

  3.   

    {unit1单元;}type
    TArrData = Array[0..2,0..3] of Word;type
    TProcess = Class(TObject)
      procedure get(tmp:TArrData);
    end;procedure TProcess.get(tmp:TArrData);
    beginend;{unit2单元:}
    {不用再定义TArrData,引用unit1单元,可以直接使用unit1中的TArrData}uses unit1;{放在interface下面的uses里面}type
    TProcess = Class(TObject)
      procedure get(tmp:TArrData);
    end;procedure TProcess.get(tmp:TArrData);
    beginend;
    {2个单元的get函数调用,都是这样:}
    var
     tArr:TArrData;
     Process:TProcess;
    begin
     Process:=TProcess.Create;
     Process.get(tArr);
     ...
    end;
      

  4.   

    如果unit2的TProcess和unit1的相同,unit2就不用定义了,直接调用unit1的就行
      

  5.   

    谢谢了,习惯性的把其它单元文件的引用房子implementation下面,忘了可以在开头就直接USES了。