Integer数组的例子 type TDynamicArray = array of Integer; procedure p(Value: TDynamicArray); begin Value[0] := 1; end; procedure Run; var a: TDynamicArray; begin SetLength(a, 1); a[0] := 0; p(a); Writeln(a[0]); // Prints "1"! end;
你可以使用array of const;比如 procedure DoSomething(A: array of const); 或者 function MakeStr(const Args: array of const): string;调用例子: MakeStr(['test', 100, ' ', True, 3.14159, TForm])
function MakeStr(const Args: array of const): string; var I: Integer; begin Result := ''; for I := 0 to High(Args) do with Args[I] do case VType of vtInteger: Result := Result + IntToStr(VInteger); vtBoolean: Result := Result + BoolToStr(VBoolean); vtChar: Result := Result + VChar; vtExtended: Result := Result + FloatToStr(VExtended^); vtString: Result := Result + VString^; vtPChar: Result := Result + VPChar; vtObject: Result := Result + VObject.ClassName; vtClass: Result := Result + VClass.ClassName; vtAnsiString: Result := Result + string(VAnsiString); vtCurrency: Result := Result + CurrToStr(VCurrency^); vtVariant: Result := Result + string(VVariant^); vtInt64: Result := Result + IntToStr(VInt64^); end; end;
使用开放数组参数: function FunctionName(const ArrayName: array of Integer) : Integer; 注意在函数体中不能访问整体数组,而只能访问对应数组的元素。Integer 可以为其他类型。
type
TDynamicArray = array of Integer; procedure p(Value: TDynamicArray);
begin
Value[0] := 1;
end; procedure Run;
var
a: TDynamicArray;
begin
SetLength(a, 1);
a[0] := 0;
p(a); Writeln(a[0]); // Prints "1"!
end;
procedure DoSomething(A: array of const);
或者
function MakeStr(const Args: array of const): string;调用例子:
MakeStr(['test', 100, ' ', True, 3.14159, TForm])
var
I: Integer;
begin
Result := '';
for I := 0 to High(Args) do
with Args[I] do
case VType of
vtInteger: Result := Result + IntToStr(VInteger);
vtBoolean: Result := Result + BoolToStr(VBoolean);
vtChar: Result := Result + VChar;
vtExtended: Result := Result + FloatToStr(VExtended^); vtString: Result := Result + VString^;
vtPChar: Result := Result + VPChar;
vtObject: Result := Result + VObject.ClassName;
vtClass: Result := Result + VClass.ClassName;
vtAnsiString: Result := Result + string(VAnsiString);
vtCurrency: Result := Result + CurrToStr(VCurrency^);
vtVariant: Result := Result + string(VVariant^);
vtInt64: Result := Result + IntToStr(VInt64^); end;
end;
function FunctionName(const ArrayName: array of Integer) : Integer;
注意在函数体中不能访问整体数组,而只能访问对应数组的元素。Integer 可以为其他类型。
具体思路:
定义一个只有一个参数的函数
ex:
function Name(s:string):string;
当客户端要传未知个数的参数时,可以这样写
假如有3个则
s:='par1,par2,par3'
把s作为参数传
再在函数里根据传进来的参数根据","号分解出来就行了
至于分解的函数我想大家都会写了,csdn上多得是