请教:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;  procedure my(ss:array of string ;i:integer);
var
  Form1: TForm1;implementation{$R *.dfm}procedure my(ss:array of string ; i:integer);
var
    str:array of string;
    j:integer;
begin
    setlength(str,i);
    for j:=0 to i-1 do
        begin
              showmessage(str[i]);
        end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
    ss:array of string;
begin
    setlength(ss,3);
    ss[0]:='1232';
    ss[1]:='sdd';
    ss[2]:='dsfddf';
    my(ss,3);
end;end.
请教:
当我单击 Button1 ,为什么不弹出 '1232' 'sdd' 'dsfddf' 呢?
谢谢!

解决方案 »

  1.   

    procedure my(ss: array of string; i: integer);
    var
       j : integer;
    begin
        for j:=0 to i-1 do
            begin
                  showmessage(ss[j]);
            end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
        ss:array of string;
    begin
        setlength(ss,3);
        ss[0]:='1232';
        ss[1]:='sdd';
        ss[2]:='dsfddf';
        my(ss,3);
    end;
    哥们估计你形参实参并不是很清楚
      

  2.   

    谢谢大哥:
    procedure my(ss:array of string ; i:integer);
    var
        str:array of string;
        j:integer;
    begin
        setlength(str,i);
        str:=ss;
        for j:=0 to i-1 do
            begin
                  showmessage(ss[j]);
            end;
    end;
    为什么 编译时 str:=ss; 这里有错误呢?
    谢谢!
      

  3.   

    array of string
     不能直接:=
      

  4.   

    必须要把array of string声明成一种类型,例如说type
      TDynStrArry = array of string;var
      a, b: TDynStrArry;这样a,b之间才能直接赋值。
      

  5.   

    补充一下,其实我的意思是想说,函数的形参和实参要声明成一种类型,这样才能传递。直接用array of string是不行的。