提示Array Type Required!简单问题, 二维数组如何做函数参数?

Storm2008 2009-02-24 09:58:53
// calculate the coefficient, //Data : Array[0..30,  0..6] of Double
procedure CalCoef(Data : Array of Double);
var



i, j, k : Integer;
begin
try
sump := 0.0;
sumt := 0.0;


//
for i := 0 to 2 do
begin
for j := 0 to 5 do
begin
for k := j*4 to j*4+3 do
begin
sump := sump + Data[k,i+4];
sumt := sumt + Data[k,0];
end;



end;
end;



sump := sump + Data[k,i+4]; 这句话提示错误Array Type Required,
我想应该是没设置数组维数的原因,看了下帮助没看明白。
Data应该是31X7的数组
...全文
439 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Storm2008 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 starluck 的回复:]
引用 1 楼 Storm2008 的回复:
找到答案了,把二维数组定义成一个类,在作为函数参数就行了。


應該是自定義成一個新的數據類型,


好像 pByte = array of Byte :)
[/Quote]

明白
我基本概念就不太清晰...


等活干完了找本书系统看下
qiume 2009-02-25
  • 打赏
  • 举报
回复
需要定义一种新的数据类型,比如:

type TDynamicCharArray = array of Char;
function Find(A: TDynamicCharArray): Integer;
mandarin 2009-02-25
  • 打赏
  • 举报
回复
Tfoo = array of array of Double
这个可以,我时这么用的
[Quote=引用 3 楼 Seamour 的回复:]
array of Double是一维的动态数组,delphi不支持直接用高维动态数组作参数,必须先定义一个新的类型,如
Tfoo = array of array of Double

Tfoo = array of array[0..6]of Double
再用Tfoo作参数声明
[/Quote]
不得闲 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 unsigned 的回复:]
type
TDoubleArray = array of Double;
procedure CalCoef(Data : Array of TDoubleArray );

[/Quote]
顶江哥
Storm2008 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 starluck 的回复:]
呵呵, 感覺你什麼都有了, 現在發現底子又有點問題了,再重翻下書,你的功力應該會精進不少的。
[/Quote]

呵呵
人说一瓶子不满半瓶子咣当
我现在连个瓶底都没盖上呢
我是学控制的,编程全靠上学那阵胡乱看的,没系统看过书,没做过实际的项目
平时工作也是测试,分析数据电路试验一类的
对大部分编程概念似是而非,所以我问的都是基本问题
在公司看用的测试程序质量不太好,就改了几个
领导一看改的还行,正好有个新项目需要写点测试程序就让我写了。
实际一作才发现自己基础还是太差了。。。
等忙完了系统看一遍书估计就好多了

starluck 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Storm2008 的回复:]
找到答案了,把二维数组定义成一个类,在作为函数参数就行了。
[/Quote]

應該是自定義成一個新的數據類型,


好像 pByte = array of Byte :)
bdmh 2009-02-25
  • 打赏
  • 举报
回复
delphi中数组作为参数传递,要将数组作为一个类去传递
starluck 2009-02-25
  • 打赏
  • 举报
回复
呵呵, 感覺你什麼都有了, 現在發現底子又有點問題了,再重翻下書,你的功力應該會精進不少的。
sanguomi 2009-02-24
  • 打赏
  • 举报
回复
感觉写指针方面的东西,还是C++顺手些,DELPHI 有点拗口
sanguomi 2009-02-24
  • 打赏
  • 举报
回复
另外这样也可以, 二维数组等于指向一维数组的指针,在DELPHI里实现麻烦点


#include <iostream>
using namespace std;
void fun(int a[][3])
{
}
int main(void)
{
/*方法一, 指向一维数组的指针*/
int a[3] = {0};
int (*b)[3] = &a;
fun(b);

/*方法二,直接调用*/
int c[][3] = {0};
fun(c);
return 0;
}



type
ArrayType = array[0..3] of Integer;
pArray = ^ArrayType;

var
ArrayType1: ArrayType;
Array_pointer: pArray;
J: Integer;
begin
for J := 0 to High(ArrayType1) do
ArrayType1[j] := j;
Array_pointer := @ArrayType1;
fun(Array_pointer^);
end;

//显示二维数组内容
procedure fun(Test: array of ArrayType);
var
I, J: Integer;
begin
for I := 0 to High(Test) do
for J := 0 to High(ArrayType) do
ShowMessage(IntToStr(Test[I,J]));
end;


僵哥 2009-02-24
  • 打赏
  • 举报
回复
或者:
type 
TDualDoubleArray = array of array of Double;
procedure CalCoef(Data : TDualDoubleArray );
Seamour 2009-02-24
  • 打赏
  • 举报
回复
array of Double是一维的动态数组,delphi不支持直接用高维动态数组作参数,必须先定义一个新的类型,如
Tfoo = array of array of Double

Tfoo = array of array[0..6]of Double
再用Tfoo作参数声明
僵哥 2009-02-24
  • 打赏
  • 举报
回复
type
TDoubleArray = array of Double;
procedure CalCoef(Data : Array of TDoubleArray );
Storm2008 2009-02-24
  • 打赏
  • 举报
回复
找到答案了,把二维数组定义成一个类,在作为函数参数就行了。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧