各位大哥好,在自定义过程调用过程中,如何传递数组?

w37249 2008-03-30 09:16:33
就是通过对过程的调用来达到对数组的改变。就是怎么引用数组。
小弟在这谢谢了。
...全文
68 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
禹爸爸 2008-03-30
  • 打赏
  • 举报
回复
这是因为你在Kao这个函数定义的数组为动态数组,其索引是从0开始的,你在a[2]处肯定会出错的。
针对你上面的代码有两种修改方法:
1.将你要使用的数组使用Type定义为一自定义类型,然后在你的ButtonClick和Kao方法中使用;
Type
TMyArray = Array [1..2] of Integer;

procedure kao(var a:TMyArray);
var
tem:integer;
begin
tem:=a[1];
a[1]:=a[2];
a[2]:=tem;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
a:TMyArray;
i:integer;
begin
a[1]:=1;
a[2]:=2;
kao(a);
for i:=1 to 2 do
edit1.Text:=edit1.Text+' '+inttostr(a[i]);

end;


2.将ButtonClick中使用的数组也定义为动态数组。
w37249 2008-03-30
  • 打赏
  • 举报
回复
implementation

{$R *.dfm}
procedure kao(var a:array of integer);
var
tem:integer;
begin
tem:=a[1];
a[1]:=a[2];
a[2]:=tem;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
a:array[1..2] of integer;
i:integer;
begin
a[1]:=1;
a[2]:=2;
kao(a);
for i:=1 to 2 do
edit1.Text:=edit1.Text+' '+inttostr(a[i]);

end;

end.
能编译通过就是让他运行时会出现错误。
w37249 2008-03-30
  • 打赏
  • 举报
回复
但是会出错啊
liangpei2008 2008-03-30
  • 打赏
  • 举报
回复
procedure ChangeArray(Arr:array of Integer);//数组名本身已经就是地址了
UndefinedCoder 2008-03-30
  • 打赏
  • 举报
回复
procedure ChangeArray(var Arr:array of Integer);
w37249 2008-03-30
  • 打赏
  • 举报
回复
小弟拜谢了啊!
UndefinedCoder 2008-03-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhouzuoji 的回复:]
procedure ChangeArray(var Arr:array of Integer);
[/Quote]

试过才知道,别讲理论,你以为Pascal跟C/C++一样吗?

楼主,对数组索引最好用Low和High,别硬编码。开放数组参数的索引都从0开始的。

16,742

社区成员

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

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