就是通过对过程的调用来达到对数组的改变。就是怎么引用数组。
小弟在这谢谢了。

解决方案 »

  1.   

    procedure ChangeArray(var Arr:array of Integer);
      

  2.   

    procedure ChangeArray(Arr:array of Integer);//数组名本身已经就是地址了
      

  3.   

    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.
    能编译通过就是让他运行时会出现错误。
      

  4.   

    这是因为你在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中使用的数组也定义为动态数组。
      

  5.   


    试过才知道,别讲理论,你以为Pascal跟C/C++一样吗?楼主,对数组索引最好用Low和High,别硬编码。开放数组参数的索引都从0开始的。