求函数的参数声明——二维数组类型

春风老少年 码农  2012-04-14 11:04:36
如题,有两个文件,
文件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]?这是怎么回事呢?什么原因啊?
谢谢!!!
...全文
154 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
春风老少年 2012-04-16
谢谢了,习惯性的把其它单元文件的引用房子implementation下面,忘了可以在开头就直接USES了。
回复
kaikai_kk 2012-04-15
如果unit2的TProcess和unit1的相同,unit2就不用定义了,直接调用unit1的就行
回复
kaikai_kk 2012-04-15
{unit1单元;}

type
TArrData = Array[0..2,0..3] of Word;

type
TProcess = Class(TObject)
procedure get(tmp:TArrData);
end;

procedure TProcess.get(tmp:TArrData);
begin

end;

{unit2单元:}
{不用再定义TArrData,引用unit1单元,可以直接使用unit1中的TArrData}

uses unit1;{放在interface下面的uses里面}

type
TProcess = Class(TObject)
procedure get(tmp:TArrData);
end;

procedure TProcess.get(tmp:TArrData);
begin

end;


{2个单元的get函数调用,都是这样:}
var
tArr:TArrData;
Process:TProcess;
begin
Process:=TProcess.Create;
Process.get(tArr);
...
end;
回复
我看见佛 2012-04-15
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);
begin

end;
感觉你问问题的方式怪怪的,没怎么理解你的意思。get(tmp:TArrData);这样子是没问题的……
回复
春风老少年 2012-04-14
哦对了,上面写的UNIT1中的二维数组tArr都已经赋值过了,忘了写了。这些都没有问题,就是不知道怎么声明UNIT2中函数的二维数组参数。
回复
发帖
语言基础/算法/系统设计
创建于2007-08-02

1.6w+

社区成员

Delphi 语言基础/算法/系统设计
申请成为版主
帖子事件
创建了帖子
2012-04-14 11:04
社区公告
暂无公告