可以这样定义:
procudure F(string; const Args: array of const);
var i:integer;
begin
  for i:=low(Args) to High(Args) do
   ...
end;使用:
f([1,'aa']);

解决方案 »

  1.   

    可以用array of string来传一个动态数组当参数。只是传的时候要按数组的方式来书写。
      

  2.   

    当然用array of const更好,可以不管参数的类型
      

  3.   

    其实这样也没有完全实现。
    比如说,必须用[],类型单一等,而Writeln可是可以这样用的:
    var f:file;
    Writeln(f,'this is a stirng',128,290.12);
      

  4.   

    用C的方法还最好要把参数个数传进去,PASCAL不需要。
      

  5.   

    必须用[]是不错,但类型不单一。 如果你用array of const.
      

  6.   

    windindance(风之舞) 
    请举个例子,怎样处理类型不单一的情况?包括声明、实现和应用
      

  7.   

    Delphi5开发人员指南里面有介绍
      

  8.   

    uses sysutils, dialogs;procedure f(const A: array of const);
    var
     i:integer;
    begin
      for i:=Low(a) to High(a) do
      begin
          ShowMessage(IntToStr(a[i].vType));
        case (a[i].VType) of
        vtInteger:
          ShowMessage(IntToStr(a[i].vInteger));
        vtAnsiString:
          ShowMessage(AnsiString(a[i].vAnsiString));
        end;
      end;
    end;begin
      f([1,'2as']);
    end.// compile by delphi 5.5 ok
      

  9.   

    谢谢kevin_gao(困了!累了!睡觉了!)和windindance(风之舞)
    不过人说人心不足,我真的想知道Delphi能不能实现不用[]的未定参数的方法,还请各路大虾不吝赐教!!!
      

  10.   

    procedure a(v: array of const);procedure TForm1.a(v: array of const);
    var
      I: Integer;
    begin
      for I := 0 to High(v) do
        with v[I] do
          case VType of
            vtInteger:    showmessage(inttostr(v[I].VInteger));
    //        vtBoolean:
            vtChar:  showmessage(v[I].Vchar);
    //        vtExtended:        vtString:  showmessage(pchar(v[I].VWideString));
    //        vtPChar:
    //        vtObject:
    //       vtClass:
    //        vtAnsiString:
    //        vtCurrency:
    //        vtVariant:
    //        vtInt64:    end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      a([1,'2',3]);
    end;