首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求函数的参数声明——二维数组类型,该如何处理

2012-04-17 
求函数的参数声明——二维数组类型如题,有两个文件,文件UNIT1(主窗体单元文件)中声明了二维数组类型typeTArr

求函数的参数声明——二维数组类型
如题,有两个文件,
文件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]?这是怎么回事呢?什么原因啊?
谢谢!!!

[解决办法]

Delphi(Pascal) code
interfacetypeTArrData = Array[0..2,0..3] of Word;typeTProcess = Class(TObject)  procedure get(tmp:TArrData);end;implementationprocedure TProcess.get(tmp:TArrData);beginend;
[解决办法]
Delphi(Pascal) code
{unit1单元;}typeTArrData = Array[0..2,0..3] of Word;typeTProcess = Class(TObject)  procedure get(tmp:TArrData);end;procedure TProcess.get(tmp:TArrData);beginend;{unit2单元:}{不用再定义TArrData,引用unit1单元,可以直接使用unit1中的TArrData}uses unit1;{放在interface下面的uses里面}typeTProcess = 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; 

热点排行