function concate(args:array of string):string; var i:integer; begin result:=''; for i:=Low(args) to high(args) do result:=result+args[i]; end;ShowMessage(concate(['aaaaa','11111','~~~~~']));结果aaaaa11111~~~~~
你看看vcl source中format函数的定义就知道怎么办了,呵呵
呵呵,va_list 不过就是个指针罢了,没什么神秘的,呵呵。在C中有函数定义:Fun(int out,...)--函数的参数是可变的 va_list er;--开始提取参数 va_start(er, out)--提取 --> er <= out 后的参数的起始地址。va_end( er );--结束提取不过,Delphi 里没有这个,因为实在是太不安全了。 Delphi 用变体数组实现了类似的功能。另外,Pascal 的标准过程 Write 等的参数也是“动态可变”的,但这依赖于编译器之 “魔力”,呵呵。
va_list er;--开始提取参数
va_start(er,out)--提取
while{
...
}
va_end( er );--结束提取
var i:integer;
begin
result:='';
for i:=Low(args) to high(args) do
result:=result+args[i];
end;ShowMessage(concate(['aaaaa','11111','~~~~~']));结果aaaaa11111~~~~~
va_list er;--开始提取参数
va_start(er, out)--提取 --> er <= out 后的参数的起始地址。va_end( er );--结束提取不过,Delphi 里没有这个,因为实在是太不安全了。
Delphi 用变体数组实现了类似的功能。另外,Pascal 的标准过程 Write 等的参数也是“动态可变”的,但这依赖于编译器之
“魔力”,呵呵。