procedure ChangeArray(Var ChangedArray:Array of String);
var j:integer;
begin
  for j:=0 to 3 do begin
    SetLength(ChangedArray,j+1);//这一行有问题,可是我必须要在子过程里改变这个数组的长度,有别的办法解决吗?编译错误提示:incompatible types
    ChangedArray[j] := IntToStr(j);
  end;
end;procedure TForm1.Button1Click(Sender: TObject);
var TestArray:array of String;
    i:integer;
begin
  SetLength(TestArray,0);
  ChangeArray(TestArray);
  for i:= 0 to Length(TestArray)-1 do begin
    Showmessage(TestArray[i]);
  end;end;

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var TestArray:array of Char;
        i,j:integer;
    begin
      SetLength(TestArray,0);
      for j:=0 to 3 do begin
        SetLength(TestArray,j+1);//这一行有问题,可是我必须要在子过程里改变这个数组的长度,有别的办法解决吗?编译错误提示:incompatible types
        TestArray[j] := IntToStr(j)[1];
      end;
      //ChangeArray(TestArray);
      for i:= 0 to Length(TestArray)-1 do
      begin
        Showmessage(TestArray[i]);
      end;
    end;
    ///////////////////////////
    两个函数写到一块就可以了,动态数组大概不能作为参数,你虽然写的是Var ChangedArray:Array of String但是好像还是被作为静态数组来处理的...
      

  2.   

    是啊,小河同学,呵呵,不好意思,只有这么多分数了,我的得分怎么看不到呢,你知道吗?另外,其实我是想复用ChangeArray里的代码,里面的代码很长,现在已经解决了,是用的别的方法变通实现的,子过程动态改变数组的长度可能实现不了,我只好在调用之前就定义好了它的长度。马上结贴,分数给你。有人来捐给我点分吗?我好可怜啊另外顺便问一句吧:小河,你知不知道,我想在页面上显示一个类似于Dbgrid的表格,然后通过Delphi改变它的内容,但我不想使用数据库,你知道有办法实现吗?我看到有一个StringGrid,但是感觉好象不太好使一样。